ノート:

OCI証明書を使用した内部証明書の発行およびNginxサーバーでのTLS/SSL保護Webサイトのホスト

イントロダクション

このチュートリアルでは、Oracle Cloud Infrastructure (OCI)証明書を使用して内部証明書を発行し、NginxサーバーでTransport Layer Security (TLS)/Secure Sockets Layer (SSL)で保護されたWebサイトをホストする方法について説明します。OCI証明書は、TLS証明書を作成および管理するためのサービスです。このサービスにより、組織は、OCI Load BalancerやOCI API GatewayなどのOCIサービスと統合され、顧客テナンシに自動的にデプロイおよび更新できるプライベート認証局(CA)階層およびTLS証明書を作成できます。このサービスを使用して、Nginxでホストされる内部Webサーバーの証明書を生成することもできます。

NginxサーバーでTLS/SSL暗号化を有効にするには、TLS/SSL証明書が必要です。証明書署名リクエスト(CSR)は、証明書を取得するためにCAに送信されるリクエストです。CSRには、証明書を要求する組織およびドメインに関する情報が含まれます。この情報は、TLS/SSL証明書を発行する前にCAによって検証されます。この情報を検証すると、証明書がドメインの適切な所有者に発行されます。CSRを作成すると、秘密鍵も生成されます。この秘密キーは、対応する公開キーで暗号化されたデータを復号化するために使用されます。この鍵を安全に生成し、安全に保つことが重要です。

目的

前提条件

タスク1: OCI ComputeインスタンスへのOCI CLIのインストール

タスク2: OCIでの認証局(CA)の作成

当社のWebサイトの内部証明書の発行に使用されるOCI証明書サービスを使用して、認証局(CA)を作成します。CA構成の詳細は、認証局の作成を参照してください。

または

OCI CLIを使用してCAを作成します。ルートCAを作成するには、oci certs-mgmt certificate create-certificate-issued-by-internal-CAコマンドおよび必須パラメータを使用します。詳細は、create-certificate-issued-by-internal-caを参照してください。

コマンド・フォーマット:

oci certs-mgmt certificate-authority create-root-ca-by-generating-config-details --compartment-id <compartment_OCID> --name <CA_display_name> --subject <CA_subject_information> --kms-key-id <Vault_encryption_key_OCID>

サンプル・コマンド:

oci certs-mgmt certificate-authority create-root-ca-by-generating-config-details --compartment-id ocid1.compartment.oc1..aaaaaaaaxxx --name MyRootCA --subject file://subject.json --kms-key-id ocid1.key.oc1.iad.abcxxxxx

ノート:サブジェクトは複合タイプで、その値は有効なJSONである必要があります。値は、コマンドラインで文字列として指定するか、またはfile://path/to/file構文を使用してファイルとして渡すことができます。

subject.jsonファイルの例

subject.json
{
  "commonName": "MyRootCA"
}

タスク3: OpenSSLを使用した証明書署名リクエスト(CSR)の作成

NginxサーバーにCSRを作成します。これにより、同じサーバーに秘密キーも作成されます。これは、公開キーでCAを送信する標準化された方法、および会社とドメイン名を識別する情報を提供する推奨アプローチです。NginxサーバーでCSRを直接生成すると、TLS/SSL証明書が発行されるとシームレスに統合できます。

  1. cd /etc/pki/tls/private/に移動します。

  2. mywebsitecert.cnfという名前のファイルを作成して、証明書をリクエストするサブジェクト代替名(SAN)などのパラメータを指定します。

    ノート: SAN拡張により、ドメイン名やIPアドレスなどの追加のアイデンティティを証明書サブジェクトに添付できます。SAN拡張機能の使用は、SSL証明書の標準プラクティスであり、共通名の使用を置き換える方法になっています。

    サンプル・ファイル:

    [req]
    distinguished_name = req_distinguished_name
    req_extensions = v3_req
    prompt = no
    
    [req_distinguished_name]
    C = IN
    ST = Telangana
    L = Hyd
    O = OU
    CN = www.mywebsite.com
    
    [v3_req]
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = mywebsite.com
    IP.1 = 1.2.3.4
    
    
  3. 次のコマンドを使用してCSRを作成します。

    SSL証明書を取得するには、CAにmywebsite.csrファイルを指定する必要があります。これを使用して、ドメインのSSL証明書を生成します。mywebsitecert.cnfファイルですでに提供されている構成が使用されます。

    private.keyファイルは、対応する公開キーで暗号化されたデータの復号化に使用されるため、セキュアに保ちます。

    openssl req -out mywebsite.csr -newkey rsa:4096 -nodes -keyout private.key -config mywebsitecert.cnf
    

タスク4: CAを使用した証明書の作成

OCI CLIを使用して新しい証明書を作成するには、証明書の.pemをNginxサーバーにインストールする必要があります。

  1. csrファイルの形式を.pem形式に変換します。

    openssl req -inform DER -in mywebsite.csr -out mywebsite.pem
    
  2. 次のコマンドを実行して、証明書を作成します。

    コマンド・フォーマット:

    oci certs-mgmt certificate create-certificate-managed-externally-issued-by-internal-ca --compartment-id  <compartment_OCID>  --csr-pem <csr_pem> --issuer-certificate-authority-id <CA_OCID> --name <Certificate-name>
    

    サンプル・コマンド:

    oci certs-mgmt certificate create-certificate-managed-externally-issued-by-internal-ca --compartment-id ocid1.compartment.oc1..aaaaaaaaxxx --csr-pem mywebsite.pem --issuer-certificate-authority-id ocid1.certificateauthority.oc1.iad.aaaxxxx
    --name mywebsite.com
    

タスク5: 証明書および証明書チェーンのダウンロード

証明書のpemファイルは、OCIコンソールから直接取得し、「アイデンティティとセキュリティ」「証明書」「証明書」「コンテンツの表示」に移動して、certificate-pemおよびcertificate-chain-pemのコンテンツをダウンロードできます。

両方のファイルの内容(上部のcertificate-pemとファイル下部のcertificate-chain-pem)を組み合せて、単一のファイルを作成します。ca_certificate.pemという名前を付けることができます。

または

次のコマンドを使用して、OCI CLIから証明書をフェッチすることもできます。

コマンド・フォーマット:

oci certificates certificate-bundle get --certificate-id <Certificate_OCID> > certificate.crt

ノート:証明書のOracle Cloud Identifier (OCID)をコピーします。

タスク6: 証明書を使用したNginxサーバーのインストールおよび構成

  1. コンピュート・インスタンスにNginxをインストールします。詳細は、Install Nginxを参照してください。

  2. Webブラウザを開き、https://your-server-ipを使用してWebページにアクセスします。ブラウザに表示される可能性のあるセキュリティ警告またはエラーを確認します。

    イメージ

    セキュリティ警告が表示されるため、証明書をインストールし、Nginxサーバーでconfファイルを変更する必要があります。

  3. ダウンロードしたcertificate.pemおよびca_certificate.pemファイルをOCIコンソールまたはOCI CLIからNginxサーバーにコピーします。

  4. /etc/nginx/conf.dにある構成ファイルを編集して、Nginxサーバーを構成します。

    イメージ

  5. Nginxサーバーを再起動します。

タスク7: HTTPSが動作しているかどうかのテスト

CA証明書(ca_certificate.pem)をローカル・マシンの信頼できるルート認証局フォルダ、このWebサイトへのアクセスに使用されるクライアント・マシンの証明書ストアに配置しました。これは、OCI証明書によって作成されたCAがプライベートCAであるため、ブラウザによって信頼されないため、Webサイトにアクセスしようとするすべてのローカル・マシンで、トラステッド・ルート・ストアまたは中間ストアにルートCAおよび中間CA (使用されている場合)を追加する必要があるためです。

Webブラウザを開き、https://your-server-ipを使用してWebページにアクセスします。これで、Webページに有効なTLS証明書が提供され、以前に発生したセキュリティ警告またはエラーを解決する必要があることがわかります。

イメージ

イメージ

これらのタスクに従うことで、Nginxサーバーが内部CA証明書で正しく構成され、クライアントがHTTPS経由でWebページに安全にアクセスできることを確認します。

承認

その他の学習リソース

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

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