Я использую openssl, но если вы предпочитаете этого не делать или находитесь в системе (в частности, в Windows), в которой его нет, , так как Java 7 в 2011 keytool
может выполнить всю работу :
keytool -printcert -sslserver host[:port] -rfc >tempfile
keytool -import [-noprompt] -alias nm -keystore file [-storepass pw] [-storetype ty] <tempfile
# or with noprompt and storepass (so nothing on stdin besides the cert) piping works:
keytool -printcert -sslserver host[:port] -rfc | keytool -import -noprompt -alias nm -keystore file -storepass pw [-storetype ty]
И наоборот, для java 9 всегда, а для более ранних версий во многих случаях Java может использовать файл PKCS12 для хранилища ключей вместо традиционного файла JKS, а OpenSSL может создать PKCS12 без какой-либо помощи. из keytool:
openssl s_client -connect host:port </dev/null | openssl pkcs12 -export -nokeys [-name nm] [-passout option] -out p12file
# <NUL on Windows
# default is to prompt for password, but -passout supports several options
# including actual value, envvar, or file; see the openssl(1ssl) man page