如何在没有CSR的Tomcat中安装GoDaddy SSL证书?

时间:2018-11-23 01:01:12

标签: java ssl tomcat keytool

我们的一位客户购买了通配SSL证书(* .example.com) 从GoDaddy获得,他只需下载就不会提供CSR数据。该zip文件中有3个文件。它们是fce4f111a61ea3f4.crtgd_bundle-g2-g1.crtgdig2.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

2 个答案:

答案 0 :(得分:1)

按照此处和其他地方的信息,这在 Windows 上的 TC9 上对我有用:

  1. 确保路径有一个 Java Home:

    set PATH=%PATH%;C:\Program Files\Java\jre1.8.0_281\bin

  2. 创建密钥库:

    keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore mydomain.jks

  3. 提取 .csr:

    keytool -certreq -alias server -file C:\pathtoit\csr.txt -keystore mydomain.jks

  4. 将csr.txt交给godaddy并获取证书

  5. 导入包和 .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)

我假设您已经按照上述声明维护了密钥库。为了避免任何意外,请先备份密钥库。

除了拥有的文件之外,您还应该具有所生成证书的私钥

现在按照步骤进行操作。

  1. 首先从密钥库文件中删除所有现有条目。
keytool -delete -alias tomcat -keystore domain.jks

您还可以通过 keytool -list -keystore domain.jks 删除它们来查看其他任何现有条目。

  1. 现在将证书和私钥导出到PKCS12文件中
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
  1. 将PKCS12文件导入JKS密钥库:
keytool -importkeystore -srckeystore cert_and_key.p12 -srcstoretype PKCS12 -alias tomcat -keystore domain.jks
  1. 现在将根证书导入到JKS密钥库(具有根别名)
keytool -import -trustcacerts -alias root -file $certdir/gd_bundle-g2-g1.crt -noprompt -keystore domain.jks
  1. server.xml
  2. 中添加关注者
<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

  1. 完成。现在,重新启动 Tomcat服务器,并收听日志文件
sudo service tomcat7 restart
sudo tail -f /var/log/tomcat7/catalina.out

注意:将domain.jks替换为您的实际密钥库文件。