配置 Https 请求
GuoJun 2020-08-28 Https
# 配置Tomcat证书
- 复制证书到resources文件夹下
- 配置application.yml添加server中https配置
server:
tomcat:
uri-encoding: UTF-8
max-threads: 1000
min-spare-threads: 30
port: 8080
ssl:
key-store: classpath:public/admin.yh-future.com.pfx ## 配置路径
key-store-password: 11z5NS62 ## 配置密码
keyStoreType: PKCS12
connection-timeout: 5000ms
servlet:
session:
cookie:
http-only: true
# 配置Nginx证书
复制证书到nginx/cert目录
配置nginx.conf文件
#以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
listen 443; #配置HTTPS的默认访问端口号为443。此处如果未配置HTTPS的默认访问端口,可能会造成Nginx无法启动。Nginx 1.15.0以上版本请使用listen 443 ssl代替listen 443和ssl on。
server_name www.certificatestests.com; #将www.certificatestests.com修改为您证书绑定的域名,例如:www.example.com。如果您购买的是通配符域名证书,要修改为通配符域名,例如:*.aliyun.com。
root html;
index index.html index.htm;
ssl_certificate cert/domain name.pem; #将domain name.pem替换成您证书的文件名称。
ssl_certificate_key cert/domain name.key; #将domain name.key替换成您证书的密钥文件名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录。
index index.html index.htm;
}
}
- 重启Nginx
./nginx -t #检查配置
./nginx -s reload #重启Nginx服务器
# 配置Nginx中Http自动转Https
- 通过Nginx利用497配置http跳转到https
error_page 497 https://$host:$server_port$uri$is_args$args;
- 完整Nginx配置
server {
listen 8001 ssl;
server_name localhost;
root /project/system/frontend/dist/;
ssl_certificate /usr/local/nginx/cert/admin.yh-future.com.pem;
ssl_certificate_key /usr/local/nginx/cert/admin.yh-future.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
error_page 497 https://$host:$server_port$uri$is_args$args;
location / {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 80端口转发到https
http{
#http节点中可以添加多个server节点
server{
#ssl 需要监听443端口
listen 443;
# CA证书对应的域名
server_name zhihao.free.idcfengye.com;
# 开启ssl
ssl on;
# 服务器证书绝对路径
ssl_certificate /etc/ssl/cert_felord.cn.crt;
# 服务器端证书key绝对路径
ssl_certificate_key /etc/ssl/cert_felord.cn.key;
# session超时
ssl_session_timeout 5m;
# 协议类型
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# ssl算法列表
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
# 是否 服务器决定使用哪种算法 on/off TLSv1.1 的话需要开启
ssl_prefer_server_ciphers on;
location ^~ /zhihao/ {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080/;
}
}
# 如果用户通过 http 访问 直接重写 跳转到 https 这个是一个很有必要的操作
server{
listen 80;
server_name zhihao.free.idcfengye.com;
rewrite ^/(.*)$ https://zhihao.free.idcfengye.com:443/$1 permanent;
}
}