双方向のSSLベース統合用キーストア・ファイルの作成
双方向のSSL対応サーバーと通信する統合を作成する必要がある場合は、双方向のSSLベースの統合を容易にするために、Oracle Integrationアイデンティティの確立に必要なキーストア・ファイルを作成する必要があります。
双方向SSL対応サーバーでホストされている外部REST APIを使用する統合を作成するには、外部REST APIがホストされているサーバーが双方向SSLサポートに対して有効になっていることを確認します。 Javaバージョン1.8以上を使用します。
クライアント証明書は様々な方法で取得できます。 環境に最適なメソッドを選択します。 たとえば、多くの認証局から証明書を直接取得できます。 この項のステップでは、証明書署名リクエスト(CSR)を生成し、既知の認証局によって署名する方法について説明します。
ノート:
- この項では、アウトバウンド双方向SSL統合で使用するためにOracle Integrationを構成する方法について説明します。 インバウンド双方向SSL統合でOracle Integrationを使用するには、Oracle Cloud Infrastructure APIゲートウェイを使用できます。 Oracle Cloud Infrastructure APIゲートウェイは、Oracle Cloud Infrastructure証明書サービスと統合されています。 この方法では、クライアントmTLSを強制するOracle Integrationで実装されたAPIを提供できます。
- 接続エージェントを介した外部サービスへのコールでは、双方向SSLはサポートされていません。 双方向SSLには、接続エージェントなしでOracle Integrationからの直接接続が必要です。
- 指定する別名は、JKSファイルの秘密キー・エントリに指定された名前と一致する必要があります。
blogおよび「APIデプロイメントへのmTLSサポートの追加」を参照してください。
よく使用される用語とツール
| 用語 | 説明 |
|---|---|
| Secure Socket Layer (SSL)およびTransport Layer Security (TLS) | SSLおよびTLS(後継)は、ネットワーク接続されたコンピュータ間で認証および暗号化されたリンクを確立するためのプロトコルです。 |
| デジタル証明書 | 信頼できる認証局によって組織またはエンティティに提供される暗号化キーを保持するデータ・ファイル。 単純な類似性は運転免許証です。 ライセンスは、発行先の個人を一意に識別します。 ライセンスは、信頼できる認証局であるDMVによって発行されます。 |
| 証明書 | 公開キーと秘密キーは、データの暗号化と復号化に使用されるペアを形成します。 公開キーは、データを安全に交換する必要があるすべてのユーザーに自由に付与できます。 秘密キーは共有しないでください。また、安全に格納する必要があります。 秘密キーがリストされているか危険にさらされた場合は、発行元の認証局に通知して、証明書失効リストに追加できるようにする必要があります。 |
| 認証局(または認証局) | デジタル証明書を発行するエンティティ。 デジタル証明書は、証明書の名前付きサブジェクトによって公開キーの所有権を証明します。 |
| 証明書のエンコーディング/形式 |
|
| TrustStore | 信頼証明書または公開証明書用のパスワードで保護されたリポジトリ。 Javaのデフォルトのロケーションは$JAVA_HOME/jre/lib/security/cacertsです。 よく知られているすべての認証局ルート証明書および中間証明書は、JDKトラストストアで使用できます。
|
| キーストア | クライアント証明書またはプライベート証明書を保持するパスワードで保護されたリポジトリ。 このストアは秘密キーを保持するため、ストアがセキュアなロケーションに存在することが重要です。 |
| 証明書チェーン | 証明書チェーンは、ルート証明書で終わる証明書の順序付きリストです。 信頼を確立するために、証明書チェーン全体がトラバースされます。 各証明書は、ルート証明書に到達するまで、次の発行認証局または中間認証局の公開キーを検索することによって検証されます。 証明書チェーンは通常、証明書をローカルで検証するためにキャッシュされます。 |
SSLで最も一般的に使用されるツールは次の2つです:
| ツール | 説明 |
|---|---|
keytool |
トラストストアおよびキーストアでCRUD操作を実行し、証明書を管理するために使用されるJDKユーティリティ。 すべてのコマンドには、ストアの作成に使用されたパスワードが必要です。 デフォルトのパスワードについては、Javaトラストストアのドキュメントを参照してください。 |
openssl |
これは、TLSおよびSSLプロトコル用の堅牢で商用グレードのフル機能ツールキットです。 また、汎用暗号化ライブラリでもあります。 |
keytoolユーティリティを使用してクライアント証明書を作成するコマンド
一般的に使用される
keytoolコマンドは次のとおりです。
注意:
次のコマンドのイタリック体の変数を、ご使用の環境に適した値に置き換えます。| 説明 | コマンド |
|---|---|
| ストアのコンテンツ全体をリスト | keytool -list -keystore path_to_the_keystore
|
| 特定の別名のストア内のコンテンツをリスト | keytool -list -keystore path_to_the_keystore -alias alias_name |
| 証明書の内容の表示 | keytool -printcert -v -file name_of_the_file |
| ストアからの証明書のエクスポート | keytool -export -alias alias_name -file certificate_name -keystore path_to_the_store |
| 新しい証明書をストアにインポート | keytool -import -trustcacerts -file path_to_the_certificate -alias alias_name -keystore path_to_the_store |
クライアント証明書を作成するには:
注意:
イタリック体の変数は、特定の値を指定する必要があるプレースホルダー変数を示します。 次のコマンドをコピーする場合は、イタリック体で示されている変数を環境に適した値に置き換えてください。- Java
binディレクトリに移動します。%JAVA_HOME%/jre/bin - 次のコマンドを入力して、証明書を保持するJKSキーストアを作成します。
keytool -genkey -keyalg RSA -alias alias_name -keystore identityKeystore.jks -storepass password_for_the_keystore -validity 360 -keysize 2048 - プロンプトが表示されたら、会社のセキュリティ・ポリシーに基づいて指定された値を変更します。
What is your first and last name? [Unknown]: <FQDN> What is the name of your organizational unit? [Unknown]: Your_functional_org What is the name of your organization? [Unknown]: Company What is the name of your City or Locality? [Unknown]: City_name What is the name of your State or Province? [Unknown]: State_name What is the two-letter country code for this unit? [Unknown]: US Is CN=<>, OU=<>, O=<>, L=Redwood Shores, ST=California, C=US correct? [no]: yes Enter key password for <oicclient> (RETURN if same as keystore password): - JKSキーストア・ファイルの存在を確認します。
ls - 署名の準備ができている証明書を作成します。
keytool -certreq -alias alias_name -keystore name_of_keystore -storepass password -storetype JKS -file name_of_csr_certificate.csr - ディレクトリ内のJKSキーストアおよび証明書ファイルをリストします。
ls - 次のサイトでCSRファイルを検証します。
https://ssltools.digicert.com/checker/views/csrCheck.jsp .csr証明書ファイルを署名局に提供します。 署名付き証明書とルート証明書および中間証明書は署名され、機関によって返されます。 自己署名証明書はテストに使用できますが、本番環境では使用できません。- ルート証明書と中間証明書がある場合は、次のサブステップを実行します。 それ以外の場合は、ステップ10に進みます。
- ルート証明書がある場合は、次のコマンドを入力して署名付きルート証明書をインポートします。
keytool -import -keystore keystore_name -file path_to_root_certificate -alias root_alias_name次の例は、DigiCertルート証明書のインポート時に表示される内容です。
Enter keystore password: Owner: CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US Issuer: CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US Serial number: 83be056904246b1a1756ac95991c74a Valid from: Thu Nov 09 16:00:00 PST 2006 until: Sun Nov 09 16:00:00 PST 2031 Certificate fingerprints: MD5: 79:E4:A9:84:0D:7D:3A:96:D7:C0:4F:E2:43:4C:89:2E SHA1: A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36 SHA256: 43:48:A0:E9:44:4C:78:CB:26:5E:05:8D:5E:89:44:B4:D8:4F:96:62:BD:26:DB:25:7F:89:34:A4:43:C7:01:61 Signature algorithm name: SHA1withRSA Version: 3Extensions:#1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 03 DE 50 35 56 D1 4C BB 66 F0 A3 E2 1B 1B C3 97 ..P5V.L.f....... 0010: B2 3D D1 55 .=.U ] ]#2: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ]#3: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ DigitalSignature Key_CertSign Crl_Sign ]#4: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 03 DE 50 35 56 D1 4C BB 66 F0 A3 E2 1B 1B C3 97 ..P5V.L.f....... 0010: B2 3D D1 55 .=.U ] ]Trust this certificate? [no]: yes Certificate was added to keystore - 中間証明書がある場合は、次のコマンドを入力して署名付き中間証明書をインポートします。
keytool -import -keystore keystore_name -file path_to_intermediate_certificate -alias intermediate_certificate_aliasEnter keystore password: replace_with_strong_password Certificate was added to keystore
- ルート証明書がある場合は、次のコマンドを入力して署名付きルート証明書をインポートします。
- 単一の証明書しかない場合は、次のコマンドを入力して署名付き証明書をインポートします。
keytool -import -keystore keystore_name -file path_to_signed_certificate -alias the_same_alias_used_to_create_the_keystoreEnter keystore password: replace_with_strong_password Certificate was added to keystore - すべての証明書がストアにあるかどうかを確認します。
keytool -list -keystore - 公開証明書をエクスポートします。
keytool -export -alias certificate_alias -keystore identity_keystore -file your_public_certificate_filenameEnter keystore password: replace_with_strong_password - 公開証明書をエクスポートしてサーバーに提供します。
keytool -export -alias certificate_alias -keystore identityKeystore.jks -file your_public_certificate_filename Enter keystore password: Certificate stored in file your_public_certificate_filename - 新しいキーストアをX509アイデンティティ証明書としてOracle Integrationにインポートします。
- ストアのコンテンツ全体をリストします。
keytool -list -keystore path_to_the_keystore
例: keytoolユーティリティを使用したクライアント証明書の作成
この項では、クライアント証明書の作成方法の例を示します。 実際のファイル名が使用されます。 これらの名前を、使用している環境に適した値に置き換えます。
- 次のコマンドを入力して、証明書を保持するJKSキーストアを作成します。
keytool -genkey -keyalg RSA -alias oicclient -keystore identityKeystore.jks -storepass replace_with_strong_password -validity 360 -keysize 2048この例では、次の値を入力します:-aliasは、oicclientキーストアの別名です。-keystoreは、identityKeystore.jksキーストア・ファイルです。
- プロンプトが表示されたら、会社のセキュリティ・ポリシーに基づいて指定された値を変更します。
What is your first and last name? [Unknown]: Joe Smith What is the name of your organizational unit? [Unknown]: Development What is the name of your organization? [Unknown]: GlobalChips What is the name of your City or Locality? [Unknown]: Redwood Shores What is the name of your State or Province? [Unknown]: California What is the two-letter country code for this unit? [Unknown]: US Is CN=<>, OU=<>, O=<>, L=Redwood Shores, ST=California, C=US correct? [no]: yes Enter key password for oicclient (RETURN if same as keystore password): - JKSキーストア・ファイルの存在を確認します。
ls - 署名の準備ができている証明書を作成します。
keytool -certreq -alias oicclient -keystore identityKeystore.jks -storepass replace_with_strong_password -storetype JKS -file oicclient.csrこの例では、次の値を入力します:-aliasは、oicclientキーストアの別名です。-keystoreは、identityKeystore.jksキーストア・ファイルです。-fileは、oicclient.csr証明書ファイルです。
- ディレクトリ内のJKSキーストアおよび証明書ファイルをリストします。
ls oicclient.csr identityKeystore.jks - 次のサイトで
.csr証明書ファイルを検証します。https://ssltools.digicert.com/checker/views/csrCheck.jsp .csr証明書ファイルを署名局に提供します。 証明書とルート証明書および中間証明書は署名され、機関によって返されます。 自己署名証明書はテストに使用できますが、本番環境では使用できません。- ルート証明書と中間証明書がある場合は、次のサブステップを実行します。 それ以外の場合は、ステップ9に進みます。
- ルート証明書がある場合は、次のコマンドを入力して署名付きルート証明書をインポートします。
keytool -import -keystore identityKeystore.jks -file DigiCertGlobalRootCA.crt -alias DigiCertCARootこの例では、次の値を入力します:-keystoreは、identityKeystore.jksキーストア・ファイルです。-fileは、DigiCertGlobalRootCA.crt署名付きルート証明書ファイルです。-aliasはDigiCertCARoot別名です。
Enter keystore password: replace_with_strong_password Owner: CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US Issuer: CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US Serial number: 83be056904246b1a1756ac95991c74a Valid from: Thu Nov 09 16:00:00 PST 2006 until: Sun Nov 09 16:00:00 PST 2031 Certificate fingerprints: MD5: 79:E4:A9:84:0D:7D:3A:96:D7:C0:4F:E2:43:4C:89:2E SHA1: A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36 SHA256: 43:48:A0:E9:44:4C:78:CB:26:5E:05:8D:5E:89:44:B4:D8:4F:96:62:BD:26:DB:25:7F:89:34:A4:43:C7:01:61 Signature algorithm name: SHA1withRSA Version: 3Extensions:#1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 03 DE 50 35 56 D1 4C BB 66 F0 A3 E2 1B 1B C3 97 ..P5V.L.f....... 0010: B2 3D D1 55 .=.U ] ]#2: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ]#3: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ DigitalSignature Key_CertSign Crl_Sign ]#4: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 03 DE 50 35 56 D1 4C BB 66 F0 A3 E2 1B 1B C3 97 ..P5V.L.f....... 0010: B2 3D D1 55 .=.U ] ]Trust this certificate? [no]: yes Certificate was added to keystore - 中間証明書がある場合は、次のコマンドを入力して署名付き中間証明書をインポートします。
keytool -import -keystore identityKeystore.jks -file DigiCertGlobalInterCA.crt -alias DigiCertCAInterこの例では、次の値を入力します:-keystoreは、identityKeystore.jksキーストア・ファイルです。-fileは、DigiCertGlobalInterCA.crt署名付き中間証明書です。-aliasはDigiCertCAInter別名です。
Enter keystore password: replace_with_strong_password Certificate was added to keystore
- ルート証明書がある場合は、次のコマンドを入力して署名付きルート証明書をインポートします。
- 単一の証明書しかない場合は、次のコマンドを入力して署名付き証明書をインポートします。
keytool -import -keystore identityKeystore.jks -file my_company_signedcert.pem -alias oiclientこの例では、次の値を入力します:-keystoreは、identityKeystore.jksキーストア・ファイルです。-fileは、my_company_signedcert.pem署名付き証明書です。-aliasはoiclient別名です。
Enter keystore password: replace_with_strong_password Certificate was added to keystore - すべての証明書がストアにあるかどうかを確認します。
keytool -list -keystore identityKeystore.jks - プライベート・アイデンティティ証明書に対応するパブリック証明書をエクスポートします。
keytool -export -alias oicclient -keystore identityKeystore.jks -file my_company_signedcert.pemこの例では、次の値を入力します:-aliasは、oicclientキーストアの別名です。-keystoreは、identityKeystore.jksキーストア・ファイルです。-fileは、my_company_signedcert.pem公開証明書ファイルです。
Enter keystore password: replace_with_strong_password Certificate stored in file my_company_signedcert.pem - 新しいキーストア(
.jksファイル)をOracle IntegrationにX509アイデンティティ証明書としてインポートします。 - ストアのコンテンツ全体をリストします。
keytool -list -keystore identityKeystore.jks
openSSLでの証明書の管理
一般的に使用されるopensslコマンドは次のとおりです:
| 説明 | コマンド |
|---|---|
| 証明書の確認 | openssl x509 -in certificate_name -text -noout
|
| サーバーからすべての証明書を取得 | openssl s_client -connect host:ssl_port -showcerts |
| DER形式の証明書をPEM形式に変換 | openssl x509 -inform der -in path_to_DER_certificate -out path_to_PEM_certificate |
JKSストアへの.pfxファイルの変換
|
keytool -importkeystore -srckeystore path_to_.pfx_file -srcstoretype pkcs12 -destkeystore path_to_the_jks_file -deststoretype JKS -srcstorepass pfx_passwd -deststorepass pfx_passwd |
.jksファイルをPKCS12形式に変換
|
keytool -importkeystore -srckeystore path_to_.jks_file -destkeystore full_path_to_.p12_file-srcstoretype JKS - deststoretype PKCS12 -deststorepass pkcs12_store_password |
.pfxファイルからの秘密キーの抽出
|
openssl pkcs12 -info -in path_to_.pfx_file -nodes -nocerts -out private_key_file_name |
.pfxファイルから公開証明書を抽出
|
openssl pkcs12 -in path_to_.pfx_file -out path_to_certificate_file -nokeys |
証明書管理 - 双方向SSLまたはmTLS
「SSL/TLS接続のデバッグ」を参照してください。
アイデンティティ証明書をアップロードするには:
- ナビゲーション・ペインで、「ホーム」>「設定」>「証明書」を選択します。
- 「アップロード」をクリックします。
- 別名を、アイデンティティ証明書のキーストアにリストされている別名に設定します。 (キーストアの内容を表示するには、
keytool -listを使用します。) - 証明書カテゴリが「アイデンティティ」に設定されていることを確認します。
- JKS形式でクライアント証明書ファイルをアップロードします。
- JKSストアの作成に使用するキーストアとキー・パスワードを入力します。 パスワードに不一致がある場合、Oracle Integrationはアイデンティティ証明書にアクセスできません。
- Oracle Integrationに新しいアダプタ接続(SOAPアダプタまたはRESTアダプタ接続)を作成します。
- 接続ページで、双方向SSLチェック・ボックスを選択し、SSL接続の完了に使用する接続に必要な別名を関連付けます。 この別名は、「証明書をアップロード」ダイアログに入力した値と一致する必要があります。
相互TLS認証(mTLS)をテストするには:
- 最初にブラウザからエンドポイントへのアクセスをテストします。 クライアント証明書を
.p12形式で選択したブラウザにインポートします。 - ブラウザ・バーにエンドポイントを入力し、Enterを押します。 インポートされたクライアント証明書の使用を求めるメッセージが表示されます。
- メッセージのプロンプトに従います。 証明書が有効な場合、コンテンツはブラウザにロードされます。
- ブラウザのテストが成功した場合は、Oracle IntegrationでREST/SOAPアダプタ接続をテストします。