1

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());
    }
4

1 に答える 1