SSL соединение с охтпп - переполнение подписано, байт = 465 - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь получить http-запрос к REST-конечной точке.Я связан с okhttp2.7.5, поскольку среда, которую я использую для проекта, определяет его.Мои исследования привели меня к следующей теме:

Вопрос, на котором я основывал свой код:

И поэтому мой код выглядит так:

OkHttpClient httpClient = new OkHttpClient();

    SSLContext sslContext;
    TrustManager[] trustManagers;

    char[] keyPassword = "123456".toCharArray();
    String keyLocation = "key.pem";
    String host = "https://localhost:";
    Integer port = 8150;


    try {
        KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
        keyStore.load(null, null);
        InputStream keyStoreData = new FileInputStream(keyLocation);
        BufferedInputStream bis = new BufferedInputStream(keyStoreData);
        CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
        while (bis.available() > 0) {
            Certificate cert = certificateFactory.generateCertificate(bis);
            keyStore.setCertificateEntry(host + port, cert);
        }

        TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        trustManagerFactory.init(keyStore);
        trustManagers = trustManagerFactory.getTrustManagers();

        KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        keyManagerFactory.init(keyStore, keyPassword);

        sslContext = SSLContext.getInstance("SSL");
        sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(),
                new SecureRandom());

        httpClient.setSocketFactory(sslContext.getSocketFactory());
    } catch (NoSuchAlgorithmException | KeyStoreException | UnrecoverableKeyException | KeyManagementException
            | CertificateException | IOException e) {
        throw new RuntimeException(e);
    }

При его использовании я получаю сообщение об ошибке:

java.lang.RuntimeException: java.security.cert.CertificateParsingException: signed overrun, bytes = 465

Я знаю, что мой сертификат хорош и действителен, поскольку его можно без проблем использовать в запросах Почтальона.

С наилучшими пожеланиями за помощь, ребята

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