開啟全站HTTPS時(shí)代-Nginx SSL+tomcat集群

目錄:
1另假、憑證申請 Let’s Encrypt
2崖叫、Nginx支持多域名ssl證書
3齿尽、Nginx強(qiáng)制使用https訪問(http跳轉(zhuǎn)到https)
4熄守、配置 Tomcat

SSL For Free 免費(fèi) SSL 憑證申請 Let’s Encrypt

什么是Let’s Encrypt

可以看看簡書上的這篇文章寫得比較詳細(xì)《Let's Encrypt SSL證書配置》

文章中詳細(xì)介紹了使用如何手動(dòng)生成SSL證書铸豁。但是我個(gè)人覺得還是比較麻煩灌曙,下面我來介紹一個(gè)簡單的生成SSL證書方案。

使用sslforfree生成Let’s Encrypt證書

https://www.sslforfree.com

填寫域名創(chuàng)建免費(fèi)的SSL證書
下載文件上傳到服務(wù)器驗(yàn)證并下載證書
文件上傳目錄
驗(yàn)證文件

配置好Nginx节芥,點(diǎn)擊第5步中的鏈接看看能不能訪問到在刺,如果訪問正常就可以點(diǎn)擊Download SSL Certificate 按鈕下載證書了逆害。

Nginx 主配置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;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;
    server_tokens off;
    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    include conf.d/*.conf;
}

Nginx web配置web.conf如下:

upstream tomcat {
   server 127.0.0.1:8080;
}

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;
    access_log  /home/dev/logs/nginx/web.access.log  main;

    #  error_page  500 502 503 504  /service/tomcat/nginx/504/504.html;
    location /static/{
        alias /home/dev/www/;
    }
    location ~/.well-known/{
        add_header Content-Type text/plain;
                allow all;
        root /home/dev/www/;
    }

     location / {
        proxy_redirect          off;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-For $remote_addr;
        client_max_body_size      20m;
        client_body_buffer_size 128k;
        proxy_connect_timeout   600;
        proxy_send_timeout      600;
        proxy_read_timeout      900;
        proxy_buffer_size       4k;
        proxy_buffers           4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_pass http://tomcat;
        }
}

總結(jié)
1、相比較從服務(wù)器中命令行獲取腳本部署方法簡單很多蚣驼,至少這邊可以圖形化操作魄幕,這樣對于一般的用戶不用擔(dān)心是否影響服務(wù)器的安全和穩(wěn)定性。
2颖杏、通過獲取到的Let's Encrypt SSL證書纯陨,我們可以部署到虛擬主機(jī)、VPS留储、服務(wù)器中翼抠,根據(jù)各種需要的WEB環(huán)境自行部署。
3获讳、因?yàn)長et's Encrypt證書90天有效期阴颖,我們在SSL FOR FREE注冊過賬戶,所以到期前會提醒我們丐膝,我們需要根據(jù)提示重新續(xù)約時(shí)間和重新替換證書部署量愧。

Nginx支持多域名ssl證書

要讓nginx支持多證書,nginx必須支持TLS SNI帅矗≠怂啵可以使用如下命令查看

./sbin/nginx -V 或者 /usr/local/nginx/sbin/nginx -V
查看Nginx是否支持TLS SNI

如果顯示TLS SNI support disabled可以參考這篇文章進(jìn)行配置

Nginx強(qiáng)制使用https訪問(http跳轉(zhuǎn)到https)

SSL FOR FREE 上下載的證書的zip包含如下內(nèi)容:

下載的證書

這里我們要將ca_bundle.crt以及certificate.crt 整合到一個(gè)文件中cert_chain.crt

 cat certificate.crt ca_bundle.crt >> cert_chain.crt

整合到一個(gè)文件需要手動(dòng)處理一下?lián)Q行浑此,不然啟動(dòng)Nginx會出現(xiàn)"PEM_read_bio:bad end line" 的問題

合并文件需要換行

Nginx 配置SSLhttps.conf如下:

1累颂、指定域名80端口強(qiáng)制使用https
2、配置https監(jiān)聽

[root@localhost conf]# cat conf.d/https.conf
upstream tomcats {
   server 127.0.0.1:8088;
}

server
    {
        listen 80;
        #listen [::]:80;
        server_name ngrok.javen205.1mfy.cn static.javen205.1mfy.cn frp.javen205.1mfy.cn ijpay.javen205.1mfy.cn;

        return 301 https://$host$request_uri;
        #rewrite ^(.*)$  https://$host$1 permanent;
    }

server {
        listen 443;
        server_name  ngrok.javen205.1mfy.cn static.javen205.1mfy.cn frp.javen205.1mfy.cn ijpay.javen205.1mfy.cn;
        ssl on;
        ssl_certificate /usr/local/nginx/conf/ssl/cert_chain.crt;
        ssl_certificate_key /usr/local/nginx/conf/ssl/private.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        access_log  /home/dev/logs/nginx/https.access.log  main;

    #  error_page  500 502 503 504  /service/tomcat/nginx/504/504.html;
    location /static/{
        alias /home/dev/www/;
    }
    location ~/.well-known/{
        add_header Content-Type text/plain;
                allow all;
        root /home/dev/www/;
    }

     location / {
        proxy_redirect          off;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-For $remote_addr;
        client_max_body_size      20m;
        client_body_buffer_size 128k;
        proxy_connect_timeout   600;
        proxy_send_timeout      600;
        proxy_read_timeout      900;
        proxy_buffer_size       4k;
        proxy_buffers           4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_pass http://tomcats;
        }
}
[root@localhost conf]#

配置Tomcat

配置Tomcat server.xml 的 Engine 模塊下配置一個(gè) Valve:

<Engine name="Catalina" defaultHost="localhost"> 
<Valve className="org.apache.catalina.valves.RemoteIpValve" 
remoteIpHeader="X-Forwarded-For" 
protocolHeader="X-Forwarded-Proto" 
protocolHeaderHttpsValue="https" httpsServerPort="8088"/>  #非80端口時(shí)尤勋,必須增加httpsServerPort配置喘落,不然request.getServerPort()方法返回 443. 
</Engine>

在Tomcat的webapps/ROOT目錄下添加test.html測試如下圖:

image.png

參考資料
Installing a certificate on Nginx
Nginx支持多域名ssl證書
解決配置SSL證書出現(xiàn)"PEM_read_bio:bad end line"問題
Nginx+Tomcat+HTTPS 配置不需要在 Tomcat 上啟用 SSL 支持

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市最冰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稀火,老刑警劉巖暖哨,帶你破解...
    沈念sama閱讀 212,332評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凰狞,居然都是意外死亡篇裁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評論 3 385
  • 文/潘曉璐 我一進(jìn)店門赡若,熙熙樓的掌柜王于貴愁眉苦臉地迎上來达布,“玉大人,你說我怎么就攤上這事逾冬∈蚰簦” “怎么了躺苦?”我有些...
    開封第一講書人閱讀 157,812評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長产还。 經(jīng)常有香客問我匹厘,道長,這世上最難降的妖魔是什么脐区? 我笑而不...
    開封第一講書人閱讀 56,607評論 1 284
  • 正文 為了忘掉前任愈诚,我火速辦了婚禮,結(jié)果婚禮上牛隅,老公的妹妹穿的比我還像新娘炕柔。我一直安慰自己,他們只是感情好媒佣,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,728評論 6 386
  • 文/花漫 我一把揭開白布汗唱。 她就那樣靜靜地躺著,像睡著了一般丈攒。 火紅的嫁衣襯著肌膚如雪哩罪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,919評論 1 290
  • 那天巡验,我揣著相機(jī)與錄音际插,去河邊找鬼。 笑死显设,一個(gè)胖子當(dāng)著我的面吹牛框弛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捕捂,決...
    沈念sama閱讀 39,071評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼瑟枫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了指攒?” 一聲冷哼從身側(cè)響起慷妙,我...
    開封第一講書人閱讀 37,802評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎允悦,沒想到半個(gè)月后膝擂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,256評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隙弛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,576評論 2 327
  • 正文 我和宋清朗相戀三年架馋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片全闷。...
    茶點(diǎn)故事閱讀 38,712評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叉寂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出总珠,到底是詐尸還是另有隱情屏鳍,我是刑警寧澤勘纯,帶...
    沈念sama閱讀 34,389評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站孕蝉,受9級特大地震影響屡律,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜降淮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,032評論 3 316
  • 文/蒙蒙 一超埋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佳鳖,春花似錦霍殴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至穿挨,卻和暖如春月弛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背科盛。 一陣腳步聲響...
    開封第一講書人閱讀 32,026評論 1 266
  • 我被黑心中介騙來泰國打工帽衙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贞绵。 一個(gè)月前我還...
    沈念sama閱讀 46,473評論 2 360
  • 正文 我出身青樓厉萝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親榨崩。 傳聞我的和親對象是個(gè)殘疾皇子谴垫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,606評論 2 350

推薦閱讀更多精彩內(nèi)容