ノート:

OCI証明書サービスを使用したIISサーバーでホストされているWebサイトの内部証明書の発行

イントロダクション

Oracle Cloud Infrastructure (OCI)証明書は、Transport Layer Security (TLS)証明書を作成および管理するためのサービスです。このサービスにより、組織は、OCI Load BalancerやOCI API GatewayなどのOCIサービスと統合され、顧客テナンシに自動的にデプロイおよび更新できるプライベート認証局(CA)階層およびTLS証明書を作成できます。このサービスを使用して、Internet Information Services (IIS)、Apacheまたはnginxでホストされている内部Webサーバーの証明書を生成することもできます。

目標

このチュートリアルでは、OCI証明書を使用して、ウィンドウIISサーバーでTLS/SSLで保護されたWebサイトをホストするために使用する内部証明書を発行する方法について説明します。2つのオプションについて説明します。

前提条件

ノート: 機密情報を入力しないでください。

タスク1: 認証局の作成

CSRを使用して証明書を発行するか、OCI証明書CAによって直接発行するかにかかわらず、CAを作成する必要があります。CAの構成方法の詳細は、認証局の作成を参照してください。

OCI証明書を使用して、ルートCAまたは下位CAを作成します。下位CAを作成するには、ルートCAが必要です。単一層階層は1つのCAで構成されます。単一CAはルートCAと発行CAの両方です。ルートCAは、PKIのトラスト・アンカーの用語です。ルートCAを信頼するアプリケーション、ユーザー、またはコンピュータは、CA階層によって発行された証明書を信頼します。発行するCAは、エンド・エンティティに証明書を発行するCAです。ただし、2層階層は、ほとんどの企業のニーズを満たす設計です。この設計では、ルートCAと部下がCAを発行しています。ルートCAロールと発行CAロールが分離されているため、セキュリティ・レベルが向上します。CAを作成するには、OCI Vaultからハードウェアで保護された既存の非対称暗号化キーにアクセスできる必要があります。詳細は、OCI Vaultの概要を参照してください。

  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。

  2. 「証明書」で、「認証局」をクリックします。

  3. 「認証局の作成」をクリックします。

  4. 「コンパートメント」をクリックし、CAを作成するコンパートメントを選択します。

  5. 「認証局タイプ」で、次のオプションからCAのタイプを選択します。

    1. Root Certificate Authority: CAのチェーン内で階層の最上位に位置するCA。

    2. 下位認証局: 他のCAを含む階層内のルートCAではない任意のCA。

  6. CAの表示名前を入力します。この名前は、管理目的でCAを識別するのに役立ちますが、CA証明書の一部として表示されるわけではありません。

  7. (オプション) CAの識別に役立つ「説明」を入力します。この説明は、CA証明書の特定に役立ちますが、CA証明書の一部として表示されるわけではありません。

  8. (オプション)タグを適用するには、「タグ付けの表示」をクリックします。詳細は、リソース・タグを参照し、「次へ」をクリックします。

  9. サブジェクト情報を入力します。これには少なくともCA証明書の所有者を識別するための共通名が含まれます。証明書の使用目的に応じて、サブジェクトは個人、組織またはコンピュータ・エンドポイントを識別します。サブジェクト情報の形式は、RFC 5280標準に準拠している必要があります。ワイルドカードを使用して、複数のドメイン名またはサブドメイン名の証明書を発行できます。

  10. (オプション) CAサブジェクト情報をさらに入力し、「追加フィールドの表示」をクリックします。サブジェクト識別名の各値の詳細は、「次へ」をクリックしてください。

  11. (オプション)「Not Valid Before」をクリックし、CAの使用を開始するUTC時間および日付を指定します。日付を指定しない場合、CAの有効期間はただちに開始します。

  12. 「有効期間の終了日」をクリックし、CAが下位CAまたは証明書の発行または検証に使用できなくなる日付を指定します。

    ノート: 有効期間の開始日より1年以上後の日付を指定する必要があります。2037年12月31日より後の日付は指定できません。値は最も近い秒に切り上げられます。

  13. 下位CAを作成する場合は、「Issuer Certificate Authority」で、このCAを発行する親CAを指定します。ルートCAを作成する場合は、次の手順に進みます。

  14. 「Vault」で、CA証明書に使用する暗号化キーを含むボールトを選択します。オプション。別のコンパートメントを指定するには、「コンパートメントの変更」をクリックします。

  15. 「キー」で、使用するボールト内のキーを選択します。証明書では非同期キーのみがサポートされるため、リストにはボールト内の非対称キーのみが含まれます。2048ビットまたは4096ビットのRivest-Shamir-Adleman (RSA)キーから選択できます。楕円曲線IDがNIST_P384の楕円曲線デジタル署名アルゴリズム(ECDSA)キーを選択することもできます。具体的には、このリストには、ハードウェア・セキュリティ・モジュール(HSM)によって保護されているこれらのタイプの非対称キーのみが含まれます。証明書では、ソフトウェアで保護されたキーの使用はサポートされていません。

  16. 「署名アルゴリズム」で、キー・アルゴリズム・ファミリに応じて次のオプションのいずれかを選択し、「次」をクリックします。

    • SHA256_WITH_RSA: SHA-256ハッシュ関数を使用したRSAキー

    • SHA384_WITH_RSA: SHA-384ハッシュ関数を使用したRSAキー

    • SHA512_WITH_RSA: SHA-512ハッシュ関数を使用したRSAキー

    • SHA256_WITH_ECDSA: SHA-256ハッシュ関数を使用したECDSAキー

    • SHA384_WITH_ECDSA: SHA-384ハッシュ関数を使用したECDSAキー

    • SHA512_WITH_ECDSA: SHA-512ハッシュ関数を使用したECDSAキー

  17. 失効ルールを構成します。「証明書の最大有効期間(日数)」で、このCAによって発行された証明書を有効にできる最大日数を指定します。有効期間は90日以内にすることを強くお薦めします。

  18. 「下位CAの最大有効期間(日数)」で、このCAによって発行されたCAを有効にして他のCAまたは証明書を発行できる最大日数を指定し、「次」をクリックします。

  19. 「失効構成」ページで、証明書失効リスト(CRL)を構成しない場合は、「失効のスキップ」チェック・ボックスを選択します。証明書失効を構成するには、チェック・ボックスの選択を解除し、CRLの保存先となる専用のOCI Object Storageバケットを指定します。

  20. (オプション)別のコンパートメントにあるバケットを検索するには、「コンパートメントの変更」をクリックします。

  21. 「オブジェクト名形式」で、オブジェクト名を指定します。オブジェクト名に中カッコを含めて、サービスが発行元CAのバージョン番号を挿入できる場所を示すことができます。この追加により、別のCAバージョンを作成するたびに既存のCRLが上書きされるのを防ぐことができます。

  22. (オプション)「カスタム形式のURL」で、オブジェクトへのアクセスにAPIで使用するURLを指定します。このURLには、証明書でCRL配布ポイント(CDP)として名前が付けられます。URLに中カッコを含めて、サービスが発行元CAのバージョン番号を挿入できる場所を示すことができます。この追加は、別のCAバージョンを作成するたびに既存のCDPが上書きされないようにするのに役立ちます。HTTPSチェーンの検証で循環依存関係が存在しない場合のみ、HTTPS URLを指定できます。

  23. (オプション)別のCDPを指定するには、「+別のURL」をクリックし、ユーザーがCRLにアクセスできる別のURLを指定して、「次」をクリックします。

  24. 情報を確認し、「認証局の作成」をクリックします。

証明書関連リソースの作成には時間がかかる場合があります。CAが作成されたら、次の2つの方法のいずれかを使用して、IISサーバーに対して発行された証明書を取得できます。

タスク2: CSRを使用して発行された証明書の取得

IISサーバー上にCSRを作成します。これにより、同じサーバーに秘密鍵も作成されます。これは、CAに公開キーを送信するための標準化された方法と、会社およびドメイン名を識別する情報を提供する推奨アプローチです。

  1. IISを使用してCSRを作成します。Internet Information Services (IIS) Managerに移動し、「接続」メニューの「サーバー名」をクリックして、「サーバー証明書」をクリックします。

    イメージ 1

  2. 「アクション」メニューで、「証明書リクエストの作成...」をクリックし、次に示すようにすべての詳細を入力して、「次へ」をクリックします

    イメージ 2

    イメージ 3

  3. 「暗号化サービス・プロバイダのプロパティ」で、次の情報を入力し、「次へ」をクリックします。

    イメージ 4

    (暗号化プロバイダタイプは、データ形式と暗号化プロトコルを共有する暗号化サービスプロバイダのファミリです。データ形式には、アルゴリズムのパディング・スキーム、キー長およびデフォルト・モードが含まれます。)

    Microsoft RSA SChannel暗号化プロバイダは推奨されるCSPであり、他の値を使用する理由がないかぎり使用する必要があります。ハッシング、データ署名および署名検証をサポートします。ビット長によって、証明書の暗号化強度が決まります。長さが大きいほど、セキュリティが強化されます。セキュリティを強化するには、2048をお薦めします。

  4. 「ファイル名」ページの「証明書リクエストのファイル名を指定します」で、「...」をクリックして、現在IIS部分を終了するCSRを保存する(.pemとしてファイルを保存する)場所を参照します。

    イメージ 5

  5. OCIテナンシにログインし、このCSRをインポートする必要があります。.pem形式のCSRファイルを使用して、OCI証明書サービス認証局証明書証明書の作成に移動し、内部CAによって発行され、外部で管理されるを選択して、次に示すように必要な詳細を入力できます。

    イメージ 6

  6. 「証明書構成」ページで、タスク2.5で作成したCSRファイルを.pem形式でアップロードし、「次」「証明書の作成」の順にクリックします。

    イメージ 7

    イメージ 8

  7. CSRを完了するためにIISサーバーで使用できる証明書の.cerを作成する必要があります。.cerファイルは、「アイデンティティとセキュリティ」「証明書」「証明書」からOCIコンソールから直接取得できます。「コンテンツの表示」をクリックし、証明書pemおよびcertificate-chain-pemの内容をダウンロードし、ファイルの上部にcertificate-pem、下部にcertificate-chain-pemの両方の内容を組み合せて1つのファイルを作成します(結果ファイルは必ず.cerとして保存してください)。

  8. 完了したら、再度IISサーバーに移動して「証明書リクエストの完了」をクリックし、上で作成した.cerファイルを指定してわかりやすい名前を指定し、「次へ」をクリックします。

    イメージ 9

    イメージ 10

    イメージ 100

  9. IISの「サーバー証明書」に証明書が表示され、Webサイトのバインディングを変更することで、IISでホストされているWebサイトに使用できます。「サイト・バインディング」を編集し、インストールされている証明書を選択します。

    イメージ 11

タスク3: CSRを使用しないOCI証明書サービスからの証明書の作成

このアプローチでは、秘密キーの管理を認証局に引き渡します。一般に、CSRはCAから証明書を取得するためのもっとも推奨される方法です。何らかの理由でCSRを取得できず、証明書を発行したい場合は、この方法を使用できます。上記で作成したCAを使用して、IISでホストされているWebサイトに証明書を発行します。当社は、当社のウェブサイトの件名(私の場合はiistest.com)、証明書プロファイルタイプ、キーアルゴリズム、使用するCAなどの証明書を発行しながら、いくつかの重要な情報を提供します。

  1. OCIコンソールに移動し、「アイデンティティとセキュリティ」をクリックします。

  2. 「証明書」で、「証明書」「証明書の作成」の順にクリックします。

  3. 「コンパートメント」で、証明書を作成するコンパートメントを選択します。証明書は、CAと同じコンパートメントまたは別のコンパートメントに存在できます。

  4. 「証明書タイプ」で、証明書の管理も行うOCI証明書CAから証明書を発行するには、「内部CAによって発行済」をクリックします。

  5. 証明書の表示名前を入力します。

  6. (オプション)証明書の識別に役立つ「説明」を入力します。

  7. (オプション)タグを適用するには、「タグ付けの表示」をクリックし、「次へ」をクリックします。

  8. サブジェクト情報を入力します。これには、証明書の所有者を識別するための共通名が含まれます。証明書の使用目的に応じて、サブジェクトは個人、組織またはコンピュータ・エンドポイントを識別します。サブジェクト情報には、DNS名またはIPアドレスをサブジェクトの代替名として含めることができ、これによって証明書の所有者も認識されます。ワイルドカードを使用して、複数のドメイン名またはサブドメイン名の証明書を発行できます。証明書の作成時に、共通名と DNS名(SANの下)の両方を指定します。(一部のブラウザでは共通名が無視され、サブジェクト名またはSAN名を使用してサブジェクト情報を評価します。)

  9. (オプション)サブジェクト代替名を追加するには、「+別のサブジェクト代替名」をクリックし、アドレスのタイプを選択し、名前を入力して「次へ」をクリックします。

  10. 証明書の用途に基づいて、次のプロファイルから証明書プロファイル・タイプを選択します。

    • TLSサーバーまたはクライアント: TLS/SSL接続用にサーバーまたはクライアントによって指定されます。

    • TLSサーバー: TLS/SSL接続用にサーバーによって指定されます。

    • TLSクライアント: TLS/SSL接続時にクライアントによって指定されます。

    • TLSコード署名: 署名の検証用にプログラムによって指定されます。

    サーバーの証明書を発行しているため、ここではTLSサーバー・プロファイル・タイプを選択する必要があります。

  11. 証明書を発行するCAを変更するには、「Issuer Certificate Authority」をクリックし、CAを選択します。必要に応じて、「コンパートメントの変更」をクリックし、CAが証明書に選択したコンパートメントとは異なるコンパートメントにある場合は、別のコンパートメントを選択します。

  12. (オプション) 「Not Valid Before」をクリックし、証明書を使用してその所有者のアイデンティティを検証する日付を入力します。日付を指定しない場合、証明書の有効期間はただちに開始します。値は最も近い秒に切り上げられます。

  13. 「有効期間の終了日」をクリックし、証明書がその所有者のアイデンティティの有効な証明ではなくなる日付を変更します。有効期間の開始日より1日以上後の日付を指定する必要があります。この日付は、発行元CAの有効期限以前の日付である必要があります。2037年12月31日より後の日付も指定できません。値は最も近い秒に切り上げられます。通常、証明書は、失効が必要になるようなことが起こらないかぎり、有効である期間全体にわたって使用されます。

  14. 「キー・アルゴリズム」では、次のオプションから、証明書キー・ペアに必要なアルゴリズムとキーの長さの組合せを選択します。

    • RSA2048: Rivest-Shamir-Adleman (RSA) 2048ビット・キー

    • RSA4096: RSA 4096ビット・キー

    • ECDSA_P256: P256曲線IDを持つECDSAキー

    • ECDSA_P384: P384曲線IDを持つECDSAキー

  15. (オプション) 「追加フィールドの表示」をクリックし、「署名アルゴリズム」で、キーに応じて次のいずれかの署名アルゴリズムを選択し、「次へ」をクリックします。

    • SHA256_WITH_RSA: SHA-256ハッシュ関数を使用したRivest-Shamir-Adleman (RSA)キー

    • SHA384_WITH_RSA: SHA-384ハッシュ関数を使用したRSAキー

    • SHA512_WITH_RSA: SHA-512ハッシュ関数を使用したRSAキー

    • SHA256_WITH_ECDSA: SHA-256ハッシュ関数を使用したECDSAキー

    • SHA384_WITH_ECDSA: SHA-384ハッシュ関数を使用したECDSAキー

    • SHA512_WITH_ECDSA: SHA-512ハッシュ関数を使用したECDSAキー

  16. 証明書の使用が中断しないように証明書の自動更新を構成するには、次の設定にゼロ以外の値を指定し、「次へ」をクリックします。

    • 更新間隔(日数): 証明書を更新する頻度。

    • 拡張更新期間(日数): 更新が発生する証明書の有効期限までの日数。

      十分な柔軟性を確保するために、証明書の有効期間の終了前に証明書を更新し、失敗した場合に十分な事前更新時間を使用します。サービスが正常に更新される前に期限切れになる証明書は、サービスが中断する可能性があります。

      ノート: 証明書はIISサーバーでは自動更新されません。証明書の新規バージョンを取得して、証明書の期限が切れたらIISサーバーで再度アップロードする必要があります。

  17. すべての情報を確認し、「証明書の作成」をクリックします。

  18. 証明書の作成後、証明書の.pemを作成する必要があります。この証明書は、IISサーバーにインストールできます。.pemファイルを作成するには、上で作成した証明書のcert.pemおよびプライベートkey.pemを取得する必要があります。cert.pemは、「アイデンティティとセキュリティ」「証明書」「証明書」「コンテンツの表示」からOCIコンソールから直接取得でき、証明書pemおよびcertificate-chain-pemの内容をダウンロードして単一のファイルを作成し、ファイルの上部にcertificate-pem、下部にcertificate-chain-pemの両方の内容を組み合せて作成します。秘密キーを取得するには、独自のOCI Cloud ShellのOCI CLIを使用し、次のコマンドを実行します。

    oci certificates certificate-bundle get --certificate-id=ocid1.certificate.XXXXXXX --bundle-type=CERTIFICATE_CONTENT_WITH_PRIVATE_KEY
    
  19. コマンド出力の「データ・セクション」の下にprivate-key-pemの内容をコピーし、.pemファイル(private.pemなど)として保存する必要があります。cert.pemファイルとprivate.pemファイルの両方がある場合は、OpenSSLを使用して.pfxファイルを生成できます。private-key-pemファイルの内容をコピーする際に、書式設定の問題が発生するため、\n文字を削除する必要がある場合があります。

    ノート: OCI CLI、OpenSSLおよびその他の多くのツールは、OCI Cloud Shellに事前インストールされており、これらの操作を簡単に実行できます。

    秘密キーの.pemファイルは、次のようになります。

    イメージ 12

  20. 次のコマンドを使用して、.pemファイルを取得できます。ネイティブのOCI Cloud Shellを使用して、これらのすべてのコマンドを実行し、秘密キーのセキュアなパスワードを指定します。このパスワードは、.pemのインポート時に必要になります。

    openssl pkcs12 -inkey priv.pem -in cert.pem -export -out iis.pem
    

    このIIS.pemファイルをIISサーバーにコピーする必要があります。このIIS.pemをIISサーバーのローカル・マシン証明書ストアにインポートする必要があります。すでにIISをインストールし、デモWebサイトを作成しました。証明書をインポートしたら、IISでホストされているWebサイトに移動し、サイト・バインディングを編集して、インストールされている証明書を選択できます。これで、https (セキュアなhttp)を使用してWebサイトをテストする準備ができました。

    イメージ 13

タスク4: 保護されたHTTP (https)を使用したIISホストWebサイトのテスト

基本的なHello Worldサイトを使用して、このデモを紹介し、ルートCA証明書(Certificate-chain-pemからエクスポート可能)を、このWebサイトにアクセスするために使用されるクライアント・マシンのローカル・マシン証明書ストアのTrusted Root Certification Authorityフォルダに配置しました。これは、OCI証明書によって作成されたCAがプライベートCAであるため、ブラウザによって信頼されないため、Webサイトにアクセスしようとするすべてのローカル・マシン上のトラステッド・ルート・ストア/中間ストアにルートCAおよび中間CA (使用されている場合)を追加する必要があるためです。

イメージ 14

確認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。