3.2. 信頼された CA 証明書の指定
3.2.1. 信頼できる CA 証明書をデプロイするタイミング
概要
アプリケーションが SSL/TLS ハンドシェイク時に X.509 証明書を受信すると、アプリケーションは発行者 CA が事前に定義された CA 証明書の 1 つであるかどうかをチェックして、受信した証明書を信頼するかどうかを決定します。受信した X.509 証明書が有効でアプリケーションの信頼された CA 証明書のいずれかによって署名されている場合、証明書は信頼できるものとみなされます。そうでない場合は拒否されます。
信頼された CA 証明書を指定するアプリケーション
HTTPS ハンドシェイクの一部として X.509 証明書を受信する可能性があるすべてのアプリケーションは、信頼できる CA 証明書のリストを指定する必要があります。たとえば、これには以下のようなタイプのアプリケーションが含まれます。
- すべての HTTPS クライアント。
- 相互認証 をサポートする HTTPS サーバー。
3.2.2. HTTPS の信頼された CA 証明書の指定
CA 証明書の形式
CA 証明書は Java キーストア形式で提供する必要があります。
Apache CXF 設定ファイルでの CA 証明書のデプロイメント
HTTPS トランスポート用に信頼されたルート CA を 1 つ以上デプロイするには、以下の手順を実行します。
-
デプロイする信頼される CA 証明書のコレクションをアセンブルします。信頼できる CA 証明書は、パブリック CA またはプライベート CA から取得できます (独自の CA 証明書を生成する方法の詳細は、「独自の証明書の作成」 を参照してください。信頼できる CA 証明書は、Java
keystore
ユーティリティー (例: PEM 形式) と互換性のある任意の形式にすることができます。必要な証明書は、秘密鍵とパスワードだけでは必要ありません。 PEM 形式の CA 証明書
cacert.pem
が指定されている場合は、以下のコマンドを入力して証明書を JKS トラストストアに追加できます (または新規のトラストストアを作成します)。keytool -import -file cacert.pem -alias CAAlias -keystore truststore.jks -storepass StorePass
CAAlias は便利なタグで、これにより、
keytool
ユーティリティーを使用して、この特定の CA 証明書にアクセスすることができます。ファイルtruststore.jks
は CA 証明書を含むキーストアファイルです。このファイルがまだ存在しない場合は、keytool
ユーティリティーが作成します。StorePass パスワードは、キーストアファイルtruststore.jks
へのアクセスを提供します。-
必要に応じて手順 2 を繰り返し、すべての CA 証明書をトラストストアファイル
truststore.jks
に追加します。 関連する XML 設定ファイルを編集して、トラストストアファイルの場所を指定します。関連する HTTPS ポートの設定に
sec:trustManagers
要素を含める必要があります。たとえば、以下のようにクライアントポートを設定できます。
<!-- Client port configuration --> <http:conduit id="{Namespace}PortName.http-conduit"> <http:tlsClientParameters> ... <sec:trustManagers> <sec:keyStore type="JKS" password="StorePass" file="certs/truststore.jks"/> </sec:trustManagers> ... </http:tlsClientParameters> </http:conduit>
ここで、
type
属性は、トラストストアが JKS キーストア実装を使用し、StorePass がtruststore.jks
キーストアへのアクセスに必要なパスワードであることを指定します。以下のようにサーバーポートを設定します。
<!-- Server port configuration --> <http:destination id="{Namespace}PortName.http-destination"> <http:tlsServerParameters secureSocketProtocol="TLSv1"> ... <sec:trustManagers> <sec:keyStore type="JKS" password="StorePass" file="certs/truststore.jks"/> </sec:trustManagers> ... </http:tlsServerParameters> </http:destination>
重要Poodle 脆弱性 (CVE-2014-3566) から保護するために、サーバー側で secureSocketProtocol を
TLSv1
に設定する必要があります。警告トラストストアを含むディレクトリー (例: X509Deploy
/truststores/
) は、安全なディレクトリー (管理者のみが書き込み可能) である必要があります。