这篇文章解决的问题:我是使用JeecgBoot,买的阿里云的ECS,但是不想花钱买阿里云的ssl证书,所以使用Let's Encrypt申请了免费证书(国内需要拥有备案好的域名),缺点是证书有效期只有3个月,3个月用完就得重新部署。这篇文章解决的是用Let's Encrypt申请免费证书,并部署到JeecgBoot项目上,用的是jar部署的方式。
一、申请ssl证书
附Let's Encrypt网址:来此加密 - Let's Encrypt 在线免费申请SSL证书
输入域名,选择算法,提交申请。
会有一个域名的验证,我记得一个是dns验证,以阿里云为例,在域名解析那里添加一条规则,选择TXT并把解析结果设置成Let's Encrypt上的那一串文本即可。
申请成功后,会到如下界面,选则通用格式的下载下来。
解压得到下图文件
接着选择pfx格式的进行下载
解压得到下图
二、部署到JeecgBoot
后端部署:
1.把certificate_new.pfx复制到后端resource目录下,如下图:
2.修改配置文件
server:
ssl:
enabled: true
key-store: certificate_new.pfx
key-store-type: PKCS12
key-store-password: #这里填detail.txt中的密码
打包发布即可,后端启动日志会显示https
前端部署:
前端修改.env.production
将证书文件(fullchain.crt和private.pem)传到服务器上,保证有访问权限即可,接着修改nginx配置:加一个server
#把80端口的默认转发到https
server {
listen 80; # 监听80端口
server_name 你的域名;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name 你的域名;
ssl on;
ssl_certificate fullchain.crt文件路径;
ssl_certificate_key private.pem文件路径;
# 前端静态资源
root html/dist;
location / {
try_files $uri $uri/ /index.html;
}
# 后端 API 服务代理配置
location /jeecgboot/ {
proxy_pass https://127.0.0.1:8080/jeecg-boot/; #这里要改成https
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重新加载nginx配置,记得防火墙(安全组)要放行443端口。
拿捏。