【问题标题】:Spring Boot - SSL setup (./well-known/pki-validation)Spring Boot - SSL 设置(./well-known/pki-validation)
【发布时间】:2018-08-09 13:08:03
【问题描述】:
我是 SSL 设置的新手,如果我的问题是错误的,请见谅。
我已经在 AWS EC2 (Windows) 实例上部署了一个 Spring Boot 应用程序,其中包含一系列通过公共 IP 地址 (AWS) 公开的静态服务,我可以公开访问它们 (http)。我现在想对它们进行 SSL(https)。我正在购买证书,在设置步骤之一中,他们已经给出了这些行来验证文本文件,有人知道吗?您能否建议我需要在我的 Spring Boot 应用程序(Tomcat)上创建 ./well-known/pki-validation 文件夹的位置?
发行供应商将为您提供一个简单的基于文本的文件,以放置在您网站“主目录”的子文件夹 /.well-known/pki-validation/ 中。如果操作正确,供应商可以通过 HTTP:// 查看此文件,然后在确认后颁发证书。
【问题讨论】:
标签:
spring-boot
tomcat
ssl
lets-encrypt
certbot
【解决方案1】:
1 在服务器上安装 certboot。
git clone https://github.com/certbot/certbot
cd certbot
./certbot-auto --help
2 获取证书
为了获得证书,您需要通过服务器公开某些文件。我使用spring boot tomcat的目标文件夹来做到这一点。
./certbot-auto certonly --webroot -w {SpringBootProjectDir}/target/classes/static/ -d {yourDomain.com}
此命令获取证书并将其保留在:
/etc/letsencrypt/live/{yourDomain.com}/
Tomcat 无法读取提供的证书,因为它不是 p12 格式。我们必须以这种格式生成证书。使用这个命令
sudo openssl pkcs12 -export -in /etc/letsencrypt/live/{yourDomain.com}/fullchain.pem -inkey /etc/letsencrypt/live/{yourDomain.com}/privkey.pem -out /etc/letsencrypt/live/{yourDomain.com}/keystore.p12 -name tomcat -CAfile /etc/letsencrypt/live/{yourDomain.com}/chain.pem -caname root
它会问你一个密码。保留密码。
3 配置服务器
server.port=443
server.ssl.enabled=true
server.ssl.key-store: /etc/letsencrypt/live/{yourDomain.com}/keystore.p12
server.ssl.key-store-password: {password}
server.ssl.keyStoreType: PKCS12
server.ssl.keyAlias: tomcat
重启服务器就可以了!