相互認証:概要Issue 相互認証は、SSL (Secure Sockets Layer) 証明書を交換することによって信頼を確立します。 データフロー クライアント (例:ServiceNow) とサーバー (サードパーティなど) は、データを送信する前にハンドシェイクを行います。クライアントには公開鍵と秘密鍵のペアを含むキーストアがありますサーバーには公開鍵と秘密鍵のペアを含むキーストアがありますクライアントは公開鍵 (証明書) をサーバーと共有し、サーバーはそれをトラストストアに保持します。サーバーは公開鍵 (証明書) をクライアントと共有し、クライアントはそれをトラストストアに保持します。たとえば、クライアントがハンドシェイクを開始し、公開証明書をサーバーに送信するとします。サーバーは、トラストストアにこの公開証明書があるかどうかをチェックします = それはそうです。サーバは公開証明書をクライアントに送信し、クライアントはこの公開証明書がトラストストアにあるかどうかを確認します。ハンドシェイクが成功したため、クライアントはペイロードを送信しますクライアントは、トラストストアのサーバーの公開証明書を使用してペイロードを暗号化します。サーバーはこのペイロードを受信し、サーバーのキーストア内の秘密キーからこのペイロードを復号化します。サーバーは、トラストストアからクライアントの公開証明書を使用して暗号化されたペイロードで応答します。クライアントはこのペイロードを受信し、クライアントのキーストア内の秘密キーからこのペイロードを復号化します。 例 ステップ 1: Keystore Pair (公開鍵と秘密鍵) を自己署名で生成: C:\Program Files\Java\jre1.8.0_162\bin>keytool -genkey -alias Keystore_alias -keyalg RSA -validity enter_Validity_in_Days -keystore Keystore_name.keystore -storepass Keystore_Password -keypass Key_PasswordWhat is your first and last name? [Unknown]: ..........What is the name of your organizational unit? [Unknown]: ..........What is the name of your organization? [Unknown]: ..........What is the name of your City or Locality? [Unknown]: ..........What is the name of your State or Province? [Unknown]: ..........What is the two-letter country code for this unit? [Unknown]: ..........Is CN=vab, OU=servicenow, O=servicenow, L=sydney, ST=nsw, C=61 correct? [no]: yes ステップ 2:上記のキーストアペアから公開証明書を抽出します。 C:\Program Files\Java\jre1.8.0_162\bin>keytool -export -alias Keystore_alias -keystore Keystore_name.keystore -storepass Keystore_Password -file Cert_name.cerCertificate stored in file <snclient.cer>Warning:The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore snclient.keystore -destkeystore snclient.keystore -deststoretype pkcs12".Related Links相互認証のデバッグ: KB0696599 - 相互認証のデバッグ 相互認証キーの設定手順: KB0696776:相互認証の設定手順:キー