RestTemplate と組み合わせて使用する TrustStrategy を検討しています。isTrusted メソッド内で、チェックされた (印刷された) 証明書は、TrustManagerFactory で定義された証明書とは異なります (ここに印刷された証明書は cacerts ファイルからのものです)。これはなぜですか?舞台裏で何が起こっているのですか?
編集: isTrusted メソッドは、私の会社の証明書をログに記録します。AcceptedIssuers は、cacerts ファイルから証明書をログに記録します。
Edit2: TrustStrategy のメソッドはランタイムと呼ばれます。TrustManagerFactory の証明書はコンパイル時と呼ばれます。多分これは問題/解決策の一部です。
TrustStrategy acceptingTrustStrategy = new TrustStrategy() {
@Override
public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
for (X509Certificate certificate: x509Certificates) {
log.info(certificate.getIssuerX500Principal().getName());
}
return true;
}
};
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("X.509");
trustManagerFactory.init((KeyStore) null);
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
X509Certificate[] acceptedIssuers = trustManager.getAcceptedIssuers();
for(X509Certificate ai : acceptedIssuers) {
log.info(ai.getIssuerX500Principal().getName());
}