1. 背景介绍
在Web应用部署过程中,从HTTP迁移到HTTPS是保障应用安全性的重要一环。HTTPS通过SSL/TLS协议为数据传输提供加密保护,能有效防止中间人攻击和数据窃取。本文将详细介绍如何在SpringBoot项目中配置SSL证书并在nginx服务器上进行部署。
2.前置准备
- 购买并注册了域名
- 申请了SSL证书(可以是商业证书或免费的Let's Encrypt证书)
- 已经将项目部署在服务器上
- 安装配置了nginx服务器
3.SSL证书配置步骤
3.1 SpringBoot后端配置
1.证书文件处理:
- 解压下载的证书文件包(选择Tomcat格式)
- 将.pfx格式的证书文件复制到项目的resources目录下
2.配置application.yml(前端也需要修改配置文件,允许https):
server: port: 8099 # HTTPS 端口 ssl: protocol: TLS key-store: classpath: XXXXX【填对应的文件名】 key-store-type: PKCS12 key-store-password: XXXXX【填txt文件中的密码】 enabled: true forwarded-headers-strategy: native
3.执行mvn clean 以及mvn package,将项目打包为jar包
3.2 Nginx配置
1.解压nginx格式的证书文件,通常包含:
- .pem 格式证书文件
- .key 格式私钥文件
2.证书文件部署:
- 点击要部署域名的网站:
- 进入ssl,选择当前证书:
- 保存之后,ssl证书会存放至路径:
/www/server/panel/vhost/ssl_saved
- 再次打开站点的管理,进入配置文件(因为我这里是已经部署过一次,过期了需要进行更换),找到自己设置证书和key对应的存放路径:
把ssl_saved里面的两个文件替换到上图的这两个路径下 ,点击保存,重新启动nignx。
这时就会在项目列表看到部署的站点对应的sll证书一栏显示还有多久到期了。
#nginx配置示例代码:
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/your/certificate.pem;
ssl_certificate_key /path/to/your/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
location / {
proxy_pass http://localhost:8099;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# HTTP重定向到HTTPS
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}