Хранилище ключей Java не может проверить URL
С тем же URL-адресом получается код подтверждения возврата 20 (невозможно получить локального эмитента сертификата):
openssl s_client -connect $URL:443 -showcerts -CAfile /etc/ssl/certs/java/cacerts
Это дает проверочный код возврата 0:
openssl s_client -connect $URL:443 -showcerts -CApath /etc/ssl/certs
Так же как и ... -CAfile /etc/ssl/certs/Thawte_Premium_Server_CA.pem
,
Но этот сертификат уже находится в хранилище ключей Java. Мне нужно иметь возможность получить доступ к URL из Java-земли, и я не могу понять, что происходит. Я всего лишь n00b здесь, поэтому любая помощь будет оценена.
1 ответ
Файл cacerts - это хранилище ключей в формате JKS, которое OpenSSL не поддерживает (это стандартный формат хранилища ключей для Java, но обычно не поддерживается утилитами, отличными от Java)
Если вы хотите использовать openssl s_client
с сертификатами из этого хранилища ключей вы можете извлечь их в удобную форму с
keytool -list -rfc -keystore /etc/ssl/certs/java/cacerts > cacerts.pem
(пароль по умолчанию для файла cacerts - "changeit", но если вы просто хотите просмотреть публичные сертификаты, вы можете просто ввести пустой пароль, и все будет в порядке)