相互認証の構成
相互認証では、SSL (Secure Sockets Layer) 証明書を交換することによって信頼を確立します。
クライアントは、サーバーに接続する前に SSL 証明書を要求します。サーバーは、応答として、クライアントに独自の証明書を送信するように要求します。どちらも、HTTPS 接続を開始する前に証明書を検証し、確認応答を送信することで応答します。
管理者は、認定要求を実行する前に、キーストアを設定して証明書を生成する予備作業を行います。
警告:
この機能で相互認証が可能になるのは、送信 HTTPS 接続だけです。
キーストアの作成
インスタンスは現在、秘密鍵、公開証明書のペア、およびその署名済み証明書を格納する Java キーストアファイルのアップロードをサポートしています。
次の手順では、コマンドを使用して、新しい Java Keytool キーストアファイルの生成、証明書署名要求 (CSR) の作成、証明書のインポートを行うことができます。ルート証明書や中間証明書はいずれも、ドメインのプライマリ証明書をインポートする前にインポートする必要があります。コマンドラインインターフェイスで次のコマンドを入力します。
- Java キーストアとキーペアを生成します。
keytool -genkey -alias mydomain -keyalg RSA -keystore my.keystore - 既存の Java キーストアの CSR を生成します。
keytool -certreq -alias mydomain -keystore my.keystore -file mydomain.csr - ルートまたは中間認証局 CA 証明書を既存の Java キーストアにインポートします。
keytool -import -trustcacerts -alias root -file Thawte.crt -keystore my.keystore - 署名済みプライマリ証明書を既存の Java キーストアにインポートします。
keytool -import -trustcacerts -alias mydomain -file mydomain.crt -keystore my.keystore
キーストアの設定
キーストアが作成されたので、証明書テーブルにアップロードできます。対象: ページで、[ 新規 ] をクリックし、次のフィールドを設定します。
- 証明書の名前を入力します。
- キーストアをアクティブとして格納します。
- タイプを [Java キーストア] に設定します。
- キーストアパスワードを入力します。これは、キーストアの作成に使用されたパスワードです。
[送信] をクリックして Java キーストアエントリを作成します。図 : 1. キーストア
信頼できるサーバー証明書の指定
送信 SSL 接続 (HTTPS Web サービス呼び出し) では、サービスプロバイダーによって提供される証明書を指定して、SSL 接続中のサービスプロバイダーの妥当性を保証することができます。たとえば、証明書で識別される安全なサービスにブラウザが接続しようとしている場合などです。
信頼できるサーバー証明書をアップロードすることで、ServiceNow により、接続しているサービスの妥当性と安全性を確保できます。
「信頼ストア証明書」タイプで新しい証明書エントリを作成し、DER 形式の証明書を添付するか、その PEM 形式をコピーして [PEM 証明書] フィールドに貼り付けます。
相互認証要求の処理
- クライアントが認証のためにサーバー証明書を要求すると、証明書署名要求 (CSR) が生成されます。
- CSR に応答するために、サーバーは 2 つの一意の暗号化キー:サーバーへのメッセージを暗号化するために使用される公開鍵とメッセージを復号化するために使用される秘密鍵を生成します。両方のキーがキーストアに保持されます。
- キーを使用して、クライアントの安全なメッセージを復号化し、サーバーで読み取りができるようにします。HTTPS になるすべての送信接続は、キーストアを確認してその公開認定を提供することで、認定を検証し、トラストストア証明書を使用して相互の信頼性を検証します。
- クライアントとサーバーとの間で安全なリンクを確立するために、サーバーは証明書を対応する秘密鍵と照合します。サーバーのみが秘密鍵にアクセスできるため、サーバーはクライアントからのデータを復号化できます。
ポート 443 で
com.glide.certificates.DBKeyStoreSocketFactory ソケットファクトリを使用して MYHTTPS を登録するコマンドの例を次に示します。データベースキーストアファクトリは、SSL 交換プロセス中に相互認証用のクライアント証明書を提供するために使用されます。glide.httpclient.protocol.myhttps.class = "com.glide.certificates.DBKeyStoreSocketFactory"
glide.httpclient.protocol.myhttps.port = "443"上記の設定は、SSL 中にカスタムソケットファクトリを使用して証明書を交換するための送信 myhttps://host.domain.com/target URL に影響します。
注:
デフォルトの HTTPS プロトコルソケットファクトリを上書きすると、すべての送信 HTTPS 接続に影響します。通常、これは望ましくありません。
サーバーは証明書を送信して応答します。これがクライアントが受け入れる証明書ですか?そうである場合、証明書を受け入れるメッセージがサーバーに送信され、安全なチャネルが開始されます。証明書が承認されない場合は、認定にルート権限が必要であることを意味します。