问题的标题很啰嗦,但我正在尝试配置我在 AWS 上为我的域购买的 Go Daddy SSL 证书。我从 AWS 购买了域 myapp.com
(不是真实名称),然后我将 myapp.myapp.com
配置为 Route 53 中的记录集以指向一个EC2 实例,它反过来运行实际的 Tomcat 服务器,我希望用户会访问它。换句话说,这是用于访问应用程序/网站的站点,我已确认它有效并且可以访问。
我从 Go Daddy 为 myapp.myapp.com
购买了 SSL 证书。我按照说明将根证书、中间证书和颁发的证书(总共 3 个)导入到我的 Java keystore 中。然后,我将我的 Tomcat server.xml
配置为使用这个 keystore 。如果这很重要,我不确定我是否正确地或以正确的顺序这样做了。无论如何,当我尝试点击地址时
https://myapp.myapp.com:8443/
我在 Chrome 上收到以下错误:
Your connection is not private
NET::ERR_CERT_AUTHORITY_INVALID
任何人都可以阐明我在这里可能做错了什么吗? GoDaddy 的客户支持虽然免费,但不提供这种级别的技术支持。我可以选择 AWS,但他们倾向于收取企业费率。
理想的答案至少应包括以下步骤:
- 如何将 Go Daddy 证书导入我的 Java keystone
- 如何正确配置 Tomcat server.xml 以使用 keystore
- 一路上进行健全性检查,其他有类似问题的人也可以使用
这是 Go Daddy 返回给我的三个证书:
c4c170b79c58acc3.crt (root?)
gd_bundle-g2-g1.crt (intermediate?)
gdig2.crt.pem (primary/issued?)
我不确定这些证书中哪些是根证书、中间证书和颁发的证书,但是 this SO question会像我上面那样给它们贴上标签。
最佳答案
要为 spring boot 应用执行此操作,请执行以下操作:
sudo openssl pkcs12 -export -out cs.pkcs12 -inkey /path/to/domain.key -in /path/to/domain.cer -certfile /path/to/domain.ca-bundle -name server -passout somestorepass
sudo keytool -v -importkeystore -srckeystore cs.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.jks -deststoretype JKS -srcstorepass somestorepass -deststorepass somestorepass
在 application.properties
server.ssl.enabled=true
server.ssl.key-alias=server
server.ssl.key-password=somestorepass
server.ssl.key-store-type=JKS
如果你有 tomcat,前两个命令保持不变,你只需要将 tomcat 配置为使用正确的 alias
和正确的 keystore 密码。
看看 Connector
配置tomcat配置别名、keystore密码、keystore等
编辑: 建议您在完成后删除中间文件(不是 JKS)。
关于amazon-web-services - 为 AWS Route 53 中的域托管区域获取 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50159647/