С тем же 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-land, и я не могу понять, что происходит. Я полный n00b здесь, поэтому любая помощь будет оценена.
Файл cacerts представляет собой хранилище ключей в формате JKS, которое OpenSSL не поддерживает (это стандартный формат хранилища ключей для Java, но обычно не поддерживается утилитами, отличными от Java).
Если вы хотите использовать openssl s_client
с сертификатами из этого хранилища ключей, вы можете извлечь их в удобную форму с помощью
keytool -list -rfc -keystore /etc/ssl/certs/java/cacerts > cacerts.pem
(пароль по умолчанию для файла cacerts - «changeit», но если вы просто хотите увидеть общедоступные сертификаты, вы можете просто ввести пустой пароль, и все будет в порядке)