ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を終える際は、これらの値をクラウド環境に固有の値に置き換えてください。
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を作成すると、秘密鍵も生成されます。この秘密キーは、対応する公開キーで暗号化されたデータを復号化するために使用されます。この鍵を安全に生成し、安全に保つことが重要です。
目的
- OCI証明書を使用して内部証明書を発行し、NginxサーバーでTLS/SSLで保護されたWebサイトをホストします。
前提条件
-
ローカル・マシンにOracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)をインストールします。OCI CLIインストール・ページからダウンロードできます。
-
必要な資格証明および構成を使用してOCI CLIを設定および構成します。
OCI setup config
コマンドを使用してOCI CLIを構成できます。 -
サーバーに Nginxをインストールします。詳細は、「NGINX構成の更新」を参照してください。
タスク1: OCI ComputeインスタンスへのOCI CLIのインストール
-
OCI CLIをインストールして構成します。詳細は、OCIコマンドライン・インタフェース(CLI)を参照してください。
-
OCIコンピュート・インスタンスに接続した後、次のコマンドを実行して、LinuxインスタンスにPythonおよびOCI CLIパッケージをインストールおよび検証します。
sudo dnf -y install oraclelinux-developer-release-el8 sudo dnf install python36-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証明書が発行されるとシームレスに統合できます。
-
cd /etc/pki/tls/private/
に移動します。 -
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
-
次のコマンドを使用して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サーバーにインストールする必要があります。
-
csr
ファイルの形式を.pem
形式に変換します。openssl req -inform DER -in mywebsite.csr -out mywebsite.pem
-
次のコマンドを実行して、証明書を作成します。
コマンド・フォーマット:
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サーバーのインストールおよび構成
-
コンピュート・インスタンスにNginxをインストールします。詳細は、Install Nginxを参照してください。
-
Webブラウザを開き、
https://your-server-ip
を使用してWebページにアクセスします。ブラウザに表示される可能性のあるセキュリティ警告またはエラーを確認します。セキュリティ警告が表示されるため、証明書をインストールし、Nginxサーバーで
conf
ファイルを変更する必要があります。 -
ダウンロードした
certificate.pem
およびca_certificate.pem
ファイルをOCIコンソールまたはOCI CLIからNginxサーバーにコピーします。 -
/etc/nginx/conf.d
にある構成ファイルを編集して、Nginxサーバーを構成します。 -
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ページに安全にアクセスできることを確認します。
関連リンク
承認
- 著者 - Shruti Soumya
その他の学習リソース
docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Use OCI Certificates to Issue an Internal Certificate and Host a TLS/SSL Protected Website on Nginx Server
F94730-01
March 2024