【问题标题】:How to update a Tomcat keystore with a renewed SSL certificate?如何使用更新的 SSL 证书更新 Tomcat 密钥库?
【发布时间】:2014-07-09 10:02:09
【问题描述】:

大约一年前,我从 GoDaddy 获得了 SSL 证书,并按照他们的说明将其安装在 Tomcat 服务器上。没有问题。

证书即将到期,所以我更新了它。 GoDaddy 向我发送了三个 .cer 文件。我不知道该怎么处理它们。

如果我生成一个全新的密钥库并尝试像第一次那样将文件导入其中,它不起作用。我认为这是因为新的密钥库没有我原来的私钥。

如果我尝试将新证书导入旧文件,则不允许这样做。

如果我使用旧密钥库并删除部分或全部旧证书并用新证书替换它们,keytool 允许这样做,但是当我将密钥库安装在我的服务器上时它不起作用。

我不知道下一步该做什么。

【问题讨论】:

  • 您是否使用新密钥续订(您是否发送了新的 CSR),还是他们只是使用相同的公钥重新签发了具有新日期的新证书?
  • 最初我告诉它使用原始密钥重新发布。后来我找到了一个用新的 CSR 重新键入的选项。这样做之后,我可以让它再次工作。我想这没关系,只需要记住明年再做。

标签: tomcat ssl keytool


【解决方案1】:

我使用了一个图形化工具,可以很容易地管理密钥库。它被称为 portecle,可以在here 找到。当您从 GoDaddy 收到新证书时,只需打开 portecle 中的密钥库,选择您的旧(即将到期)证书,右键单击它并导入新的“CA 回复”(即您更新的证书)。然后保存keystore并重启tomcat。

【讨论】:

  • 谢谢。该工具 Portecle 非常易于使用,并且非常有帮助:)
  • 谢谢伙计。这节省了我一天的时间。很棒的工具:)
  • @munyul 新版本 1.9 不适合我。导入 CA 回复时出现“无法为 CA 回复建立信任”错误
  • @Mohammedshebin 这是因为 CA 证书尚未在密钥库中,或者它不被视为 CA。
  • @eppesuig 我的证书昨天过期了。去年,它按照您的步骤工作。我现在所做的是导入有效的密钥库。我应该在更新证书时生成一个新的 csr 并发送给 godaddy 吗?
【解决方案2】:

我使用 Let's 加密证书(免费、签名)。我创建了一个自动脚本来更新密钥库,您可以将其用作灵感或移至 LE 并按原样使用它。 更多信息在这里:http://blog.ivantichy.cz/blogpost/view/74

#!/bin/bash
#author Ivan Tichy
#Please modify these values according to your environment
certdir=/etc/letsencrypt/live/jira.ivantichy.cz/ #just replace the domain name after /live/
keytooldir=/opt/atlassian/jira/jre/bin/ #java keytool located in jre/bin
mydomain=jira.ivantichy.cz #put your domain name here
myemail=xxxxxxx@gmail.com #your email
networkdevice=eth0 #your network device  (run ifconfig to get the name)
keystoredir=/home/jira/.keystore #located in home dir of user that you Tomcat is running under - just replace jira with your user you use for Tomcat, see ps -ef to get user name if you do not know

#the script itself:
cd /var/git/letsencrypt
git pull origin master
iptables -I INPUT -p tcp -m tcp --dport 9999 -j ACCEPT
iptables -t nat -I PREROUTING -i $networkdevice -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 9999

./letsencrypt-auto certonly --standalone --test-cert -d $mydomain --standalone-supported-challenges http-01 --http-01-port 9999 --renew-by-default --email $myemail --agree-tos
#./letsencrypt-auto certonly --standalone -d $mydomain --standalone-supported-challenges http-01 --http-01-port 9999 --renew-by-default --email $myemail --agree-tos

iptables -t nat -D PREROUTING -i $networkdevice -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 9999
iptables -D INPUT -p tcp -m tcp --dport 9999 -j ACCEPT

$keytooldir/keytool -delete -alias root -storepass changeit -keystore $keystoredir
$keytooldir/keytool -delete -alias tomcat -storepass changeit -keystore $keystoredir

openssl pkcs12 -export -in $certdir/fullchain.pem -inkey $certdir/privkey.pem -out $certdir/cert_and_key.p12 -name tomcat -CAfile $certdir/chain.pem -caname root -password pass:aaa

$keytooldir/keytool -importkeystore -srcstorepass aaa -deststorepass changeit -destkeypass changeit -srckeystore $certdir/cert_and_key.p12 -srcstoretype PKCS12 -alias tomcat -keystore $keystoredir
$keytooldir/keytool -import -trustcacerts -alias root -deststorepass changeit -file $certdir/chain.pem -noprompt -keystore $keystoredir


# restart your Tomcat server – mine is running JIRA
service jira stop
service jira start

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2020-07-11
    • 2011-01-04
    相关资源
    最近更新 更多