Azure SDK для Java - Как игнорировать ошибки SSL - PullRequest
1 голос
/ 03 марта 2020

Я пытался использовать Azure SDK для получения некоторой информации из имеющейся у меня учетной записи Azure.

Мне нужно отключить проверку сертификата ssl.

 public static final TrustManager[] UNQUESTIONING_TRUST_MANAGER = new TrustManager[]{
            new X509TrustManager() {
                public X509Certificate[] getAcceptedIssuers() {
                    return new X509Certificate[0];
                }

                public void checkClientTrusted(X509Certificate[] certs, String authType) {
                }

                public void checkServerTrusted(X509Certificate[] certs, String authType) {
                }
            }
    };

private SSLSocketFactory sslFactory() {
    try {
        final SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, UNQUESTIONING_TRUST_MANAGER, null);
        return sc.getSocketFactory();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

 AzureTokenCredentials credentials = new ApplicationTokenCredentials(
     "XXX",
     "XXX",
     "XXX",
     AzureEnvironment.AZURE
 ).withSslSocketFactory(sslFactory());

Azure azure = Azure.configure().authenticate(credentials).withSubscription("XXX");
azure.resourceGroups().list()

Даже с этим SSLSocketFactory я получаю:

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
    at sun.security.validator.Validator.validate(Validator.java:262)
    at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1621)

Я отлаживал sun.security.ssl.ClientHandshaker.class: 1008: ((X509ExtendedTrustManager)var6).checkServerTrusted((X509Certificate[])var2.clone(), var4, this.conn);

Это проходит дважды в этой строке. В первый раз у var6 была моя фабрика ssl, во второй раз это другая фабрика, которая выдает это исключение.

Как отключить проверку SSL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...