2021.2.24 更新
1 概述
本文演示了如何给Spring Boot
应用加上HTTPS
的过程。
2 证书
虽然证书能自己生成,使用JDK
自带的keytool
即可,但是生产环境是不可能使用自己生成的证书的,因此这里使用的证书是购买过来的,具体流程就不说了,去云厂商处购买即可。
3 配置文件
新建一个Spring Boot
工程,在配置文件添加如下参数:
server.ssl.key-store=classpath:crt/xxx.pfx
server.ssl.key-store-type=PKCS12
server.ssl.key-store-password=xxxx
具体配置需要结合云厂商的文档,笔者在阿里云上买的证书,下载的是Tomcat
的版本,参照里面的帮助设置以上三个参数。
server.ssl.key-store
:证书文件的位置,为classpath:crt/xxx
,其中classpath:
表示使用resources
下的路径,但是需要加上一个文件夹,比如,假设证书文件名为1.pfx
,直接放在resources
下的话,路径就是classpath:1.pfx
,这样是访问不了的,但是加上目录后,也就是如果放在resources/crt
下,路径就是classpath:crt/1.pfx
,这样就可以访问了server.ssl.key-store-type
:PKCS12
,根据阿里云的Tomcat
配置文档得出,具体的话根据自己的云厂商证书部署文档决定server.ssl.key-store-password
:证书下载后有两个文件,一个是证书,一个是pfx-password.txt
,这里的密码就是pfx-password.txt
的内容
4 本地测试
直接run
即可,首先可以试一下用HTTP
访问:
http://localhost:8080
会提示需要使用HTTPS
,改为HTTPS
后:
这是因为笔者的证书绑定了域名的缘故,没有使用域名访问,修改本地host
:
127.0.0.1 www.xxx.xxx
这样使用域名访问就不会显示不安全了:
5 Docker
部署
打包,改名为demo.jar
,上传到服务器。
其他更详细的Docker
部署操作请查看笔者之前的博客,戳这里。
这里给出Dockerfile
:
FROM adoptopenjdk/openjdk11:aarch64-centos-jdk-11.0.8_10
MAINTAINER test <test@qq.com>
VOLUME /tmp
EXPOSE 8080
ADD demo.jar demo.jar
ENTRYPOINT ["java","-jar","demo.jar"]
创建镜像与容器并运行:
docker build -t demo .
docker run -d -p 8888:8080 demo
测试:
6 源码
Java
版:
Kotlin
版: