關于nginx+tomcat https的陳設之前網上一直有2種說法:
1.nginx和tomcat都要陳設ssl證書
2.nginx陳設ssl證書,tomcat增加ssl支持
在實際的陳設進程中nginx的設置和ssl證書陳設很順利,可是tomcat用網上傳播的說法設置之后,發明非靜態內容無法正常利用。(項目用了dubbox,dubbox基于resteasy宣布rest協議)
顛末一系列折騰,最終總結出以下履歷,但愿能幫到其他人。
一. 申請SSL證書
SSL證書其實可以本身生成,可是因為本身生成的證書不是欣賞器廠商承認的受信機構揭曉,所以欣賞器會打紅叉!為了用戶體驗,所以
我們要到SSL證書廠商哪里申請SSL證書。小我私家推薦 globalsign(淘寶用的) wosign.com(價值優惠) startssl(有免費版)。假如利用單域名DV證書,簽發只要15分鐘-2小時。廠商凡是會把簽發好的證書以郵件形式發送過來。
1. 本身生成 證書簽名請求(CSR)和私鑰(KEY)。可以利用廠商提供的東西https://www.trustasia.com/tools/csr-generator/
也可以利用openssl生成 openssl req -new -nodes -newkey rsa:2048 -keyout domain.key -out domain.csr
2.把 證書簽名請求(CSR)和私鑰(KEY)提供應廠商。
3.收到廠商簽發好的證書。(私鑰照舊本身的)
二.陳設證書到nginx并設置
nginx的證書陳設相對簡樸。
1.確定nginx是否安裝了ssl模塊,,假如沒有需要從頭mark install。(發起 pcre-8.38 zlib-1.2.8 openssl-1.0.2g 版本太高大概導致編譯失敗)
2.把廠商提供的 x.crt 內容追加到 x.cer, 然后把 x.key 和 x.cer 放到Nginx處事器
3.nginx.conf 增加https支持。主要是設置 80 和 443 端口的監聽
server {
listen 80;
server_name x;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 443;
server_name x;
ssl on;
ssl_certificate /etc/nginx/server.cer;
ssl_certificate_key /etc/nginx/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
client_max_body_size 16m;
client_body_buffer_size 128k;
proxy_pass http://online/;
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 https;
proxy_next_upstream off;
proxy_connect_timeout 30;
proxy_read_timeout 300;
proxy_send_timeout 300;
}
}
我這里做了http強跳到https,不需要這個成果,可以去掉 rewrite ^(.*)$ https:
三.tomcat增加對https協議的支持
1.Connector節點插手 redirectPort="443" proxyPort="443"
2.插手新的Value節點