spring-boot - Spring Boot - SSL 设置 (./well-known/pki-validation)

标签 spring-boot tomcat ssl lets-encrypt certbot

我是 SSL 设置的新手,如果我的问题有误,请原谅。

我已经在 AWS EC2 (Windows) 实例上部署了一个 Spring Boot 应用程序,其中包含大量 RESTful 服务,通过公共(public) IP 地址 (AWS) 公开,我能够公开访问它们 (http)。我现在想对它们进行 SSL(https)。我正在购买证书,在其中一个设置步骤中,他们给出了这些行来验证文本文件,有人知道吗?您能否建议我需要在我的 Spring Boot 应用程序 (Tomcat) 上创建 ./well-known/pki-validation 文件夹的位置?

发行供应商将为您提供一个简单的基于文本的文件,将其放置在您站点“主目录”的子文件夹/.well-known/pki-validation/中。如果操作正确,供应商可以通过 HTTP://查看此文件,然后在确认后颁发证书。

最佳答案

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

重启服务器即可!

关于spring-boot - Spring Boot - SSL 设置 (./well-known/pki-validation),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51767924/

相关文章:

java - Spring boot Oauth2 Facebook 登录 - JSON 解析错误 : Cannot deserialize instance of `java.lang.String` out of START_OBJECT token

jsf - java.lang.ClassNotFoundException : com. 太阳.faces.config.ConfigureListener

java - 使用反向代理在 Tomcat 子文件夹中部署 Java Web

apache - 当 tomcat 位于 apache 服务器前面时,blazeds 推送消息不起作用(尽管 rpc 有效)

node.js - 是否可以在 node.js 中热交换 tls 证书?

ssl - 无法使用 SSL RMI 启动 JMeter 4.0 客户端

spring-boot - Spring boot中/*和/**模式有什么区别?

java - 如何解决此错误 : Caused by: java. lang.InknownClassChangeError: null

java - 如何使用Gradle从Spring bootRun中传递扩展的JVM选项?

wcf - 通过https访问AppHarbor上的WCF服务