https の使用を強制する外部 Web サービスとアプリケーションを統合する必要があります。この Web サービスの作成者は、https 要求を行うために使用する .crt ファイルを提供してくれました。調査の結果、セキュリティで保護された https アクセスに KeyStore クラスを使用する次のコードが見つかりました。
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
FileInputStream instream = new FileInputStream(new File(file));
try {
trustStore.load(instream, password.toCharArray());
} finally {
instream.close();
}
SSLContext sslcontext =
SSLContexts.custom().loadTrustMaterial(trustStore, new TrustSelfSignedStrategy()).build();
SSLConnectionSocketFactory sslsf =
new SSLConnectionSocketFactory(sslcontext, new String[]{"TLSv1.2"}, null,
BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
HttpClients.custom().setSSLSocketFactory(sslsf).build();
このコードでは、KeyStore には入力ストリームとパスワード trustStore.load(instream, password.toCharArray())
が必要です。ただし、私が理解しているように、.crt ファイルを使用する場合はパスワードは必要ありません。したがって、証明書をロードするこの方法は私には適していません。同時に、これまでに発見したことから、ここで提供したコードは、SSL 証明書を使用するように HttpClient を構成する唯一の方法です。.crt 証明書を使用するために HttpClient を構成する回避策はありますか?
ありがとう、
アンドレイ