Доверенные сертификаты становятся недействительными - PullRequest
3 голосов
/ 18 июня 2010

На сервере Sun Glassfish я развернул приложение, которое связывается с внешним веб-сервисом через SSL.

Я вручную импортировал сертификаты в cacerts.jks с помощью java keytool cli (keytool -import -trustcacerts -keystore cacerts.jks -alias somealias -file somecert.cer).

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

[#|2010-06-18T09:13:23.930+0200|WARNING|sun-appserver9.1|...|_ThreadID=850;_ThreadName=p: thread-pool-1; w: 901;javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: The certificate chain from the server is not trusted|...|#]

И отсюда сервис перестает работать. Согласно журналу, незадолго до возникновения исключения сертификат опрашивается, а сервер по умолчанию отвечает «нет», и я подозреваю, что именно это и вызывает ошибку.

Но что заставляет сервер внезапно ставить под сомнение сертификат? Сертификат уже импортирован и помечен как надежный в хранилище ключей. Все даты в порядке. Я что-то пропустил?

1 Ответ

1 голос
/ 22 июня 2010

Возможно, есть другое приложение, которое изменяет свойство System (javax.net.ssl.trustStore).javax.net.ssl.trustStore - это то, что указывает на доверенное хранилище ключей.Попробуйте распечатать это системное свойство, чтобы увидеть, если оно изменится.Другой вариант - запустить JVM с помощью следующей опции -Djavax.net.debug=SSL,handshake,data,trustmanager Это должно дать вам подробный вывод в файле журнала stdout.

...