我们的一位客户购买了通配SSL证书(* .example.com)
从GoDaddy获得,他只需下载就不会提供CSR数据。该zip文件中有3个文件。它们是fce4f111a61ea3f4.crt
,gd_bundle-g2-g1.crt
和gdig2.crt.pem
。
我搜索了很多与此相关的文章,但每个人都说首先要从您的服务器获取CSR数据,然后将其传递到GoDaddy中以获取SSL证书。
就我而言,我们没有向GoDaddy提供CSR数据,这意味着我没有密钥库文件。
现在,我尝试将没有密钥库的证书安装到服务器上。为此,我使用以下命令没有成功:
keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file fce4f111a61ea3f4.crt
keytool -import -alias interm -keystore tomcat.keystore -trustcacerts -file gd_bundle-g2-g1.crt
keytool -import -alias tomcat -keystore tomcat.keystore -trustcacerts -file gdig2.crt.pem
答案 0 :(得分:1)
按照此处和其他地方的信息,这在 Windows 上的 TC9 上对我有用:
确保路径有一个 Java Home:
set PATH=%PATH%;C:\Program Files\Java\jre1.8.0_281\bin
创建密钥库:
keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore mydomain.jks
提取 .csr:
keytool -certreq -alias server -file C:\pathtoit\csr.txt -keystore mydomain.jks
将csr.txt交给godaddy并获取证书
导入包和 .crt 文件:
keytool -import -trustcacerts -alias middle -file gd_bundle-g2-g1.crt -keystore mydomain.jks
keytool -import -alias server -keystore mydomain.jks -trustcacerts -file 24234234.crt
注意:如果您想查看发生了什么,请使用 Keystore Explorer。
然后在 server.xml 中:
<Connector port="443" maxHttpHeaderSize="8192" maxThreads="100"
minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true" clientAuth="false"
sslProtocol="TLS" keyAlias="server"
keystoreFile="C:\pathtoit\mydomain.jks" keystorePass="xxxx" />
答案 1 :(得分:0)
我假设您已经按照上述声明维护了密钥库。为了避免任何意外,请先备份密钥库。
除了拥有的文件之外,您还应该具有所生成证书的私钥。
现在按照步骤进行操作。
keytool -delete -alias tomcat -keystore domain.jks
您还可以通过 keytool -list -keystore domain.jks
删除它们来查看其他任何现有条目。
openssl pkcs12 -export -in fce4f111a61ea3f4.crt -inkey private.key -out cert_and_key.p12 -name tomcat -CAfile gd_bundle-g2-g1.crt -caname root
如果您收到类似以下错误的消息
unable to load private key
139995851216720:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: ANY PRIVATE KEY
这意味着您的private.key
格式不正确,您需要将编码更改为ASCII text
,然后运行以下命令来转换私钥
# You can do a dry run before manipulating the actual file
tail -c +4 private.key | file -
# Change encoding
tail -c +4 private.key > private.key
keytool -importkeystore -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -alias tomcat -keystore domain.jks
keytool -import -trustcacerts -alias root -file $certdir/gd_bundle-g2-g1.crt -noprompt -keystore domain.jks
server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150"
SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
keystoreFile="/path/to/keysore/domain.jks" keystorePass="xxxxxx"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,
TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_RC4_128_SHA" />
别忘了用您的JKS密钥库密码和xxxxxx
参数替换keystoreFile
sudo service tomcat7 restart
sudo tail -f /var/log/tomcat7/catalina.out
注意:将domain.jks
替换为您的实际密钥库文件。