我已经使用 keytool 生成了 SSL 证书:
keytool -keystore keystore -alias mySite -genkey -keyalg RSA -keysize 2048
我已经配置好了并且运行正常,但显然它没有经过受信任的 CA 签名,因此我生成了一个 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
答案1
经过几个小时的折腾,我终于找到了解决方案。我最终使用了以下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
希望其他人发现这很有用!