一、Tomcat配置HTTP协议转HTTPS协议
1. keytool.exe生成自签名证书
keytool路径为jdk的bin目录下,如jdk已配好环境变量,可以cmd直接使用该命令。
keytool -genkey -v -alias tomcat -keyalg RSA -keystore d:\local.keystore -validity 36500
生成别名为 tomcat 名称为local.keystore的证书,有效期100年。生成过程的密码自己填写,你的名字对应为网站域名。
2. tomcat配置https访问
修改 Tomcat 的 server.xml 文件:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150"
scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D:\local.keystore" keystorePass="123456" />
3. 重启tomcat
通过访问 https://127.0.0.1:8443 来测试。
二、Springboot配置HTTP协议转HTTPS协议
1. 把第一步生成的https证书local.keystore复制到springboot项目的resources目录下
2. 在application.yml中添加https相关配置
3. 启动项目
直接启动项目,或者打成jar包,cmd运行命令Java -jar test.jar后,访问https://127.0.0.1:8803。
三、nginx 配置https,前端vue后端springboot
1. 证书转换
由于第一步生成的证书是jks格式,nginx不能直接用,需要要转成PEM格式,这要用到jks2pfx工具进行转换。
- jks2pfx工具下载: http://www.willrey.com/support/jks2pfx.rar
- 将压缩包解开到 D:\jks2pfx 目录下
- cmd执行命令:jks2pfx D:\local.keystore 123456 tomcat local D:\
jks2pfx目录下生成三个文件local.key、local.crt、local.pfx,其中local.key和local.crt可用于Nginx配置
2. 配置nginx
在nginx.conf配置添加ssl证书,可以将local.key和local.crt拷贝到nginx.conf文件夹下。
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
client_max_body_size 1024m;
client_body_buffer_size 128k;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#此处主要配置nginx ssl证书
server {
#SSL 访问端口号为 443,前端访问端口号8091
listen 8091 ssl;
#填写绑定证书的域名
server_name test;
#证书文件名称
ssl_certificate local.crt;
#私钥文件名称
ssl_certificate_key local.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
#对应下面app的反向代理
#前端项目
location /{
root D:\dist; #指定dist位置
index index.html index.htm;
autoindex off; #开启nginx目录浏览功能
autoindex_exact_size off; #文件大小从KB开始显示
charset utf-8; #显示中文
try_files $uri &uri/ /index.html;
index index.html index.htm;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers Origin,X-Requested-With,Content-Type,Accept;
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, DELETE, OPTIONS'; #支持请求方式
add_header 'Access-Control-Allow-Headers' 'Content-Type,*';
}
location /prod-api/{
#**https**://localhost:9001;#此处是你后端springboot有没有配置https
proxy_pass https://127.0.0.1:8090/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~* \.(txt|doc)$ {
root D:\ nginx-1.25.1\html;
deny all;
}
error_page 403 /403.html;
location = /403.html {
root html;
}
}
}
3. 启动nginx