Я пытаюсь получить приложение, работающее поверх Tomcat 6, для подключения к LDAP-серверу через SSL.
Я импортировал сертификат сервера в хранилище ключей, используя:
C:\Program Files\Java\jdk1.6.0_32\jre\lib\security>keytool -importcert -trustcacerts -file mycert -alias ca_alias -keystore "c:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts"
Когда я запускаю Tomcat с включением SSL-отладки, в соответствии с журналами Tomcat использует правильный файл сертификата:
trustStore is: C:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts
Тем не менее, Tomcat не добавляет сертификат, который я только что импортировал, - все остальные сертификаты в файле cacerts печатаются в журнале - и сбой подключения:
handling exception: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Перезапуск Tomcat не помогает. Я проверил с командой keytool -list, что новый сертификат действительно существует в файле.
Почему Tomcat продолжает игнорировать мой новый сертификат?
EDIT:
Похоже, проблема была вызвана Windows 7 VirtualStore. Keytool создал новую копию файла cacert, а Tomcat использовал исходный файл.