セキュア・デプロイメント用の様々なタイプの証明書の作成

証明書は、単一の(または同じ)デプロイメントまたはハブ・デプロイメント内にDistibution ServiceとReciver Serviceからの分散パスを持つデプロイメントを構成するときに使用されます。

クライアント証明書、サーバー証明書および信頼できるチェーン証明書を作成してセキュアなOracle GoldenGate Microservices Architectureデプロイメントを設定する方法を次に示します。

自己署名付きの信頼できる(ルート)証明書の作成

既存の信頼できる証明書を適用するか、OGG_HOME/binディレクトリのorapkiを使用できます。

ノート:

「証明書管理」ページの「CA証明書」セクションを使用して非CA自己署名証明書を信頼できる証明書として追加することはサポートされていないため、エラーになります。

orapkiを使用してルート証明書を作成する方法を次の例で示します。

  1. ウォレットと証明書を格納するディレクトリを作成します。たとえば、~/wallet_directoryです。
  2. 自動ログイン・ウォレットを作成します。この例では、ウォレット名としてroot_caを使用します。
    orapki wallet create -wallet ~/wallet_directory/root_ca -auto_login -pwd welcome123
  3. orapkiコマンドで自己署名(ルート・ユーザー)証明書を作成するには、-sign_alg sha256オプションを指定します。
  4. orapkiウォレットの場合:
    orapki wallet add -wallet ~/wallet_directory/root_ca -dn "CN=RootCA" -addext_basic_cons -pathlen 10 -keysize 2048 -self_signed -validity 7300 -pwd welcome123 -sign_alg sha256
  5. 証明書を.pemファイルにエクスポートします。
    orapki wallet export -wallet ~/wallet_directory/root_ca -dn "CN=RootCA" -cert ~/wallet_directory/rootCA_Cert.pem -pwd welcome123
証明書の作成が完了しました。
次のコード・スニペットでは、orapkiで生成されたウォレットを設定する方法が示されています。
# 1. (Self-Signing) Root Certificate
orapki wallet create -wallet ${WORKDIR}/wallet_SRC/rootCA_SRC -auto_login -pwd welcome123 -nologo                                                
orapki wallet add    -wallet ${WORKDIR}/wallet_SRC/rootCA_SRC -dn "CN=RootCA_SRC" -addext_basic_cons -pathlen 10 -keysize 2048 \
                                                                          -self_signed -validity 1825 \
                                                                          -pwd welcome123 -nologo 
orapki wallet export -wallet ${WORKDIR}/wallet_SRC/rootCA_SRC -dn "CN=RootCA_SRC" -cert ${WORKDIR}"/wallet_SRC/rootCA_SRC_CERT.pem" -pwd welcome123 -nologo  

# 2. Server Certificate
orapki wallet create -wallet ${WORKDIR}"/wallet_SRC/server_"${v_hostname} -auto_login -pwd welcome123 -nologo                              
orapki wallet add    -wallet ${WORKDIR}"/wallet_SRC/server_"${v_hostname} -dn "CN=${v_hostname}" \
                                                                        -addext_basic_cons -pathlen 10 -keysize 2048 \
                                                                        -pwd welcome123 -nologo       
orapki wallet export -wallet ${WORKDIR}"/wallet_SRC/server_"${v_hostname} -dn "CN=${v_hostname}" \
                     -request ${WORKDIR}"/wallet_SRC/server_"${v_hostname}"_req.pem" -pwd welcome123 -nologo                               
orapki cert create   -wallet ${WORKDIR}/wallet_SRC/rootCA_SRC \
                     -request ${WORKDIR}"/wallet_SRC/server_"${v_hostname}"_req.pem" \
                     -cert ${WORKDIR}"/wallet_SRC/server_"${v_hostname}"_Cert.pem" \
                     -serial_num 25 -validity 365 -pwd welcome123 -nologo                                                     

orapki wallet add    -wallet ${WORKDIR}"/wallet_SRC/server_"${v_hostname} \
                     -trusted_cert -cert ${WORKDIR}"/wallet_SRC/rootCA_SRC_CERT.pem" -pwd welcome123 -nologo                   

orapki wallet add    -wallet ${WORKDIR}"/wallet_SRC/server_"${v_hostname} \
                      -user_cert -cert ${WORKDIR}"/wallet_SRC/server_"${v_hostname}"_Cert.pem" -pwd welcome123 -nologo     

# 3. Distribution Server Certificate
orapki wallet create -wallet ${WORKDIR}/wallet_SRC/client_SRC -auto_login -pwd welcome123 -nologo     
orapki wallet add    -wallet ${WORKDIR}/wallet_SRC/client_SRC -dn "CN=client_SRC" -keysize 2048 -pwd welcome123 -nologo                
orapki wallet export -wallet ${WORKDIR}/wallet_SRC/client_SRC -dn "CN=client_SRC" \
                     -request ${WORKDIR}/wallet_SRC/client_SRC_req.pem   -pwd welcome123 -nologo                                    
orapki cert create   -wallet ${WORKDIR}/wallet_SRC/rootCA_SRC \
                     -request ${WORKDIR}/wallet_SRC/client_SRC_req.pem \
                     -cert ${WORKDIR}/wallet_SRC/client_SRC_Cert.pem \
                     -serial_num 26 -validity 365 -pwd welcome123 -nologo

サーバー証明書の作成

次に示すステップは、root_caという名前のルート証明書を使用してサーバー証明書を作成する方法の例です。
  1. ウォレットと証明書を格納するディレクトリを作成します。たとえば、~/wallet_directoryです。
  2. 自動ログイン・サーバー・ウォレットを作成します。
    orapki wallet create -wallet ~/wallet_directory/$(hostname) -auto_login -pwd welcome123 
    要求されたら、サーバーのパスワードを入力します。
  3. 証明書署名リクエスト(CSR)をサーバーのウォレットに追加します。
    orapki wallet add -wallet ~/wallet_directory/$(hostname) -dn "CN=$(hostname)" -keysize 2048 -pwd welcome123

    ノート:

    addext_basic_cons -pathlen 10オプションは、2つの異なるデプロイメントに証明書を設定するときに、より最近の証明書を別のセキュア・ストアに適用するのに使用されるため、重要となります。unresolvable-reference.html#GUID-00744E00-2C19-4232-BC59-3C49E82A7A9Aを参照してください。
  4. CSRを.pemファイルにエクスポートします。
    orapki wallet export -wallet ~/wallet_directory/$(hostname) -dn "CN=$(hostname)" -request ~/wallet_directory/servername_req.pem -pwd welcome123
  5. CSRを使用して、サーバーの署名証明書を作成し、ルート証明書を使用して署名します。一意のシリアル番号を各証明書に割り当てます。
    orapki cert create -wallet ~/wallet_directory/root_ca -request ~/wallet_directory/servername_req.pem -cert ~/wallet_directory/servername_Cert.pem -serial_num 20 -validity 375  -sign_alg sha256
  6. ルート証明書をサーバーのウォレットに信頼できる証明書として追加します。
    orapki wallet add -wallet ~/wallet_directory/$(hostname) -trusted_cert -cert ~/wallet_directory/rootCA_Cert.pem -pwd welcome123
  7. サーバー証明書をユーザー証明書としてサーバーのウォレットに追加します。
    orapki wallet add -wallet ~/wallet_directory/$(hostname) -user_cert -cert ~/wallet_directory/servername_Cert.pem  -pwd welcome123  
ウォレットの作成が完了しました。

クライアント証明書の作成

次に示すステップは、Distribution Serviceユーザー証明書を作成する方法の例です。
  1. ウォレットと証明書を格納するディレクトリを作成します。たとえば、~/wallet_directoryです。
  2. 自動ログイン・クライアント・ウォレットを作成します。この例では、ウォレット名としてdist_clientを使用します。
    orapki wallet create -wallet ~/wallet_directory/dist_client -auto_login -pwd welcome123
  3. CSRをウォレットに追加します。
    orapki wallet add -wallet ~/wallet_directory/dist_client -dn "CN=dist_client" -keysize 2048 -pwd welcome123
  4. CSRを.pemファイルにエクスポートします。
    orapki wallet export -wallet ~/wallet_directory/dist_client -dn "CN=dist_client" -request ~/wallet_directory/dist_client_req.pem -pwd welcome123
  5. CSRを使用して、クライアントの署名証明書を作成し、ルート証明書を使用して署名します。一意のシリアル番号を各証明書に割り当てます。
    orapki cert create -wallet ~/wallet_directory/root_ca -request ~/wallet_directory/dist_client_req.pem -cert ~/wallet_directory/dist_client_Cert.pem -serial_num 30 -validity 375 -pwd welcome123
  6. ルート証明書を信頼できる証明書としてクライアントのウォレットに追加します。
    orapki wallet add -wallet ~/wallet_directory/dist_client -trusted_cert -cert ~/wallet_directory/rootCA_Cert.pem -pwd welcome123
  7. クライアント証明書をユーザー証明書としてクライアントのウォレットに追加します。
    orapki wallet add -wallet ~/wallet_directory/dist_client -user_cert -cert ~/wallet_directory/dist_client_Cert.pem -pwd welcome123 
ウォレットの作成が完了しました。

信頼できる証明書の設定

TLS接続には2つのタイプがあります。TLSを使用するには、証明書のトラスト・チェーンに対する特定の要件があります。

wss通信プロトコルは、Oracle GoldenGate Microservices ArchitectureのTLSを使用したセキュアな通信のニーズを満たすために、分散パスのDistribution Serviceで使用されます。

ノート:

Service Managerの証明書管理Webインタフェースの「CA証明書」セクションを使用して非CA自己署名証明書を信頼できる証明書として追加することはサポートされていないため、エラーになります。

外部アイデンティティ・プロバイダに対する信頼できる証明書としてのサーバーのCA証明書の設定

IDCSなどの外部アイデンティティ・プロバイダ(IDP)を使用するには、IDPサーバーの(IDCS) CA証明書を信頼できる証明書としてアップロードする必要があります。

「デプロイメントの証明書の管理」を参照してください。

Distribution ServiceとReceiver Service

Distribution ServiceとReceiver Serviceの両方に証明書が必要です。Distribution Serviceは、アウトバウンド・セクションのクライアント・ウォレットの場所にある証明書を使用します。そのウォレットの場所は、deployment_home/etc/confdeploymentConfiguration.datファイルで確認できます。

両方のウォレット内の証明書は、相互に信頼されることが必要なため、その両方にOracle GoldenGate Microservices Architectureによって発行された商用証明書を用意するか、それぞれの自己署名証明書を相互に信頼する必要があります。

自己署名証明書の場合、次のうちのいずれかを選択できます。
  • 同じルート証明書で両方の証明書に署名します。(rootCA)

  • 相手側の証明書を信頼できる証明書としてローカル・ウォレットに追加します

Receiver Serviceの場合、証明書はローカル・ウォレットの場所に対応するウォレット内にあります。この場所はdeploymentConfiguration.datファイル内にもあります。

Distribution Serviceでは、Receiver Serviceの証明書で使用されているホスト名が適切にルーティングできない場合、そのホストの正しいIPアドレスで/etc/hostsファイルを更新する必要があります。Distribution Serviceは、Receiver Serviceからの証明書を受け入れると、このIPアドレスをReceiver Serviceとの通信に使用するようになります。

Distribution ServiceおよびReceiver Serviceでのリバース・プロキシ(NGINX)の使用

Nginx証明書を信頼できる証明書としてDistribution Serviceのクライアント・ウォレットに追加します。その他の作業は不要です。通常、NGINXで使用される証明書は自己署名されています。

Nginx証明書のホスト名もルーティング可能なものであることが必要です。そうなっていない場合は、Distribution Serviceで、そのホスト名の正しいIPアドレスを反映するように、/etc/hostsファイルを更新する必要があります。Distribution Serviceは、証明書のホスト名を使用してターゲットと通信します。NGINX証明書に有効なホスト名が記述されていないときに、サブジェクト代替名レコードがある場合、そこに示されるDNS名がホスト名になります。

「Oracle GoldenGate MicroservicesにアクセスするためのNGINXによるリバース・プロキシの構成」を参照してください

ターゲット・デプロイメントでのRootCA外部証明書の作成

次のステップを使用して、ソース・デプロイメントとは異なるターゲット・デプロイメントのルートCA外部証明書および分散クライアント証明書としてサーバー証明書を作成および管理します。

クライアント証明書構成(client_src_to_trg.cfg)ファイルのサンプルを次に示します。
[ req ]
default_bits = 4096
default_md = sha512
prompt = no
encrypt_key = no
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
commonName = "client_src_to_trg"
[ my_extensions ]
クライアント証明書を生成するコマンドは、次のようになります:

# client certificate
openssl req -new -newkey rsa:2048 -nodes -keyout client.key -out client.csr -config client.cfg
openssl x509 -req -days 73000 -in client.csr -CA rootCA_extern.cert -CAkey rootCA_extern.key -CAcreateserial -out client.cert
rootCA_extern.cfg構成ファイルのサンプルを次に示します:
[ req ]
default_bits = 4096
default_md = sha512
prompt = no
encrypt_key = no
distinguished_name = req_distinguished_name
req_extensions = v3_req
x509_extensions = v3_ca
x509_extensions = usr_cert
[ req_distinguished_name ]
#countryName = "US"
#stateOrProvinceName = "CA"
#localityName = "Redwood City"
#streetAddress = "400 Oracle Pkwy"
#organizationName = "Oracle USA Inc"
#organizationalUnitName = "Security"
commonName = "rootCA_extern"
#emailAddress = "rootsecurity@oracle.com"
[ v3_req ]
basicConstraints=CA:TRUE
[ v3_ca ]
basicConstraints=CA:TRUE
[ usr_cert ]
basicConstraints=CA:TRUE
[ my_extensions ]

rootCA外部証明書を生成するコマンドは次のとおりです:

# rootCA certificate
openssl req -x509 -newkey rsa:4096 -keyout rootCA_extern.key -out rootCA_extern.cert -days 73000 -nodes -config rootCA_extern.cfg