Хранилище ключей 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", но если вы просто хотите просмотреть публичные сертификаты, вы можете просто ввести пустой пароль, и все будет в порядке)

Другие вопросы по тегам