nginx配置https转发到tomcat(使用自签名的证书)
一、使用openSSL生成自签名的证书
1、生成RSA私钥
命令:openssl genrsa -des3 -out server.key 1024
说明:生成rsa私钥,des3算法,1024强度,server.key是秘钥文件名
2、生成证书签名请求CSR
命令: openssl req -new -key server.key -out server.csr -config openssl.cnf
说明:openssl.cnf是OpenSSL的配置文件,通常放在/usr/lib/ssl/openssl.cnf
注意:需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,必须写域名,若是测试可以写localhost
3、生成自签名的证书
命令: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
二、nginx配置https
server{ listen 443 ssl; server_name 你的域名或ip; keepalive_timeout 70; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; ssl_certificate /etc/nginx/ssl/server.crt; #证书路径 ssl_certificate_key /etc/nginx/ssl/server.key; #私钥路径 ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; location / { proxy_pass http://127.0.0.1:8080/; #转发到tomcat 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; proxy_set_header X-Forwarded-Proto $scheme; } }
三、强制http转https
server { listen 80; server_name 你的域名或ip; rewrite ^(.*)$ https://$host$1 permanent; #强制转https location ~ / { root /var/www/html/8080; index index.html index.php index.htm; } }
四、tomcat配置server.xml
# 注意几个请求头和nginx虚拟主机的配置中应该是对应的 # X-Forwarded-For、X-Forwarded-Proto等 <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/>
注意:自签名的https证书是很不安全的,很多浏览器也会提示网址不完全,给用户不好的映象。建议大家还是去申请一个正式的证书
文章借鉴自:
OpenSSL生成自签名的证书:https://www.cnblogs.com/hnxxcxg/p/7610582.html
nginx配置https:https://blog.csdn.net/hylexus/article/details/53152701
http强转https:https://www.cnblogs.com/kevingrace/p/6187072.html