Java NoSuchAlgorithmException - SunJSSE, sun.security.ssl.SSLContextImpl $ DefaultSSLContext - PullRequest
22 голосов
/ 18 марта 2012

Фон

Я использую Authorize.net SDK в своем собственном проекте Eclipse.Все работало отлично.Затем мне нужно было добавить его в мой основной проект.Я добавил зависимости в путь к классу и скопировал нужный мне блок кода.Это должно было сработать.

Проблема

Короче говоря, код не будет работать там, где я его разместил.Тем не менее, он будет работать, когда я приведу его прямо к методу main в проекте.

Там, где это не сработает, я прошел по коду с помощью отладчика и обнаружил следующее исключение:

java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)

брошено в:

HttpResponse httpResponse = httpClient.execute(httpPost);

Примечание: httpClient = DefaultHttpClient от Apache

Я сейчас в полном замешательстве.Не то, что вызывает эту ошибку.В Eclipse оба продукта ориентированы на одну и ту же JRE.У них обоих также есть httpclient-4.0.1.jar.Обратите внимание, что проблемный проект также имеет некоторые другие зависимости, которые не работают в рабочем проекте {boneCP, guava, mysql_connector_java, protobuf}

Я не думаю, что дополнительные фляги являются причиной, поскольку код проблемы работает в другом местев проекте.

Любые идеи о том, что не так, очень ценятся, я потратил день на отладку этого и не знаю, куда идти дальше.

Спасибо.

Ответы [ 3 ]

28 голосов
/ 19 марта 2012

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

Затем я вспомнил, что установил два аргумента виртуальной машины, когда тестировал SSL для подключения к сети.

Я удалил следующие аргументы VM, чтобы решить проблему:

-Djavax.net.ssl.keyStore=mySrvKeystore -Djavax.net.ssl.keyStorePassword=123456

Примечание. Это хранилище ключей больше не существует, поэтому, вероятно, именно поэтому и возникла исключительная ситуация.

8 голосов
/ 26 февраля 2014

У меня была похожая проблема с этой ошибкой. В моем случае я вводил неверный пароль для хранилища ключей.

Я изменил пароль для хранилища ключей, чтобы он соответствовал тому, что я вводил (я не хотел менять пароль, который вводил), но он все равно выдал ту же ошибку.

keytool -storepasswd -keystore keystore.jks

Проблема заключалась в том, что мне также нужно было изменить пароль Ключа в хранилище ключей.

Когда я изначально создал хранилище ключей, ключ был создан с тем же паролем, что и хранилище ключей (я принял эту опцию по умолчанию). Поэтому мне также пришлось изменить пароль Ключа следующим образом:

keytool -keypasswd  -alias my.alias -keystore keystore.jks
1 голос
/ 11 октября 2018

У меня была похожая проблема.Проблема была в паролях: хранилище ключей и закрытый ключ использовали разные пароли.(Использовался проводник хранилища ключей)

После создания хранилища ключей с тем же паролем, что и у закрытого ключа, проблема была решена.

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