Я создал сертификат SSL с помощью keytool:
keytool -keystore keystore -alias mySite -genkey -keyalg RSA -keysize 2048
У меня это настроено и работает нормально, но, очевидно, оно не было подписано доверенным центром сертификации, поэтому я создал CSR:
keytool -certreq -alias mySite -keystore keystore -file mySite.csr
GoDaddy вернул мне два сертификата, которые я импортировал в свое хранилище ключей:
keytool -keystore keystore -import -alias mySite.com -file mySite.com.crt
keytool -keystore keystore -import -alias gd_bundle -file gd_bundle.crt
Я думал, что этого будет достаточно, но я все еще получаю предупреждение о ненадежном сертификате, когда открываю свое приложение через браузер. Я пропустил шаг? Мое приложение работает на Jetty, и единственная конфигурация, которую я предоставил, - это хранилище ключей и ключ-пароль.
Я получаю следующее исключение:
javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
Поработав с этим пару часов, я смог найти решение. В итоге я использовал openssl
вместо того keytool
:
openssl genrsa -des3 -out mysite.key 2048
openssl req -new -key mysite.key -out mysite.csr
Отправьте CSR, и как только вы получите сертификат:
openssl pkcs12 -export -chain -CAfile gd_bundle.crt -in mysite.com.crt -inkey mysite.key -out mysite.pkcs12
java -classpath jetty-util-6.1.26.jar:jetty-6.1.26.jar org.mortbay.jetty.security.PKCS12Import mysite.pkcs12 keystore
Надеюсь, другие сочтут это полезным!