還之前欠下的債https(nginx+tomcat)配置

目的

nginx和tomcat配置支持https訪問。
由引言可知,要支持https,需要安裝證書。

配置https

1、生成證書For Nginx

以 openssl生成證書爲例。
1、安裝openssl
下載地址:http://slproweb.com/products/Win32OpenSSL.html
 
直接安裝Win64OpenSSL-1_1_0g.exe即可
2、 配置環境變量OPENSSL_CONF
值爲openssl.cnf全路徑,例:D:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf
3、 生成證書
首先,進入你想創建證書和私鑰的目錄,例如:
$ cd /usr/local/nginx/conf
1)創建服務器私鑰,命令會讓你輸入一個口令:
$ openssl genrsa -des3 -out server.key 1024
2)創建簽名請求的證書(CSR):
$ openssl req -new -key server.key -out server.csr
3)在加載SSL支持的Nginx並使用上述私鑰時除去必須的口令:
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
4)最後標記證書使用上述私鑰和CSR:
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

2、配置

Nginx和tomcat集成支持https訪問,有2種配置方案
方案1:Tomcat自身安裝了證書,nginx直接跳轉到tomcat的https地址。
方案2:Tomcat不安裝證書,僅配置對https的支持,由nginx跳轉到tomcat的http地址。

方案一

Tomcat自身安裝證書,nginx直接跳轉到tomcat的https地址
1、Tomcat安裝https證書
1、java環境:因爲SUN公司提供了製作證書的工具keytool。
在JDK 1.4以後的版本中都包含了這一工具,它的位置爲<JAVA_HOME>\bin\keytool.exe。
2、創建證書的命令
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "f:\tomcat.keystore"  

參數的意思如下:


3、修改server.xml
找到如下已經被註釋的代碼:
 
去掉註釋,修改爲
 
clientAuth         如果設爲true,表示Tomcat要求所有的SSL客戶出示安全證書,對SSL客戶進行身份驗證
keystoreFile 指定keystore文件的存放位置,可以指定絕對路徑,也可以指定相對於<CATALINA_HOME>(Tomcat安裝目錄)環境變量 的相對路徑。如果此項沒有設定,默認情況下,Tomcat將從當前操作系統用戶的用戶目錄下讀取名爲“.keystore”的文件。
keystorePass 指定keystore的密碼,如果此項沒有設定,在默認情況下,Tomcat將使用“changeit”作爲默認密碼。
sslProtocol 指定套接字(Socket)使用的加密/解密協議,默認值爲TLS,用戶不應該修改這個默認值。
ciphers 指定套接字可用的用於加密的密碼清單,多個密碼間以逗號(,)分隔。如果此項沒有設定,在默認情況下,套接字可以使用任意一個可用的密碼。

2、Nginx直接跳轉Tomcat的https地址

server {
#監聽443端口
listen       443 ssl;
server_name  localhost 127.0.0.1 192.168.3.162;

#配置SSL證書和密鑰
ssl_certificate      D:/server.crt;
ssl_certificate_key  D:/server.key;

#可選配置
#ssl_session_timeout  5m;
#ssl_protocols  SSLv2 SSLv3 TLSv1;
#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#ssl_prefer_server_ciphers   on;

location /ou/ {
proxy_pass https://192.158.43.23 :8000;
proxy_set_header        X-Real-IP       $remote_addr;  
#此處需加上:$server_port,防止跳轉到默認80端口
proxy_set_header        Host            $host:$server_port; 
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;  
proxy_pass_request_headers              on;
proxy_redirect off;
proxy_connect_timeout      240;
proxy_send_timeout         240;
proxy_read_timeout         240;
        }
}

方案二

Tomcat不安裝證書,僅配置對https的支持,由nginx跳轉到tomcat的http地址。
1、Tomcat配置https支持
僅配置對https的支持,修改server.xml增加下圖所示內容
 
<Valve className="org.apache.catalina.valves.RemoteIpValve"
                  remoteIpHeader="x-forwarded-for"
                  remoteIpProxiesHeader="x-forwarded-by"
                  protocolHeader="x-forwarded-proto"
 protocolHeaderHttpsValue="https"
            />
2、Nginx跳轉Tomcat的http地址
server {
#監聽443端口
listen       443 ssl;
server_name  localhost 127.0.0.1 192.168.3.162;

#配置SSL證書和密鑰
ssl_certificate      D:/server.crt;
ssl_certificate_key  D:/server.key;

#可選配置
#ssl_session_timeout  5m;
#ssl_protocols  SSLv2 SSLv3 TLSv1;
#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#ssl_prefer_server_ciphers   on;

location /ou/ {
proxy_pass http://192.158.43.23 :8000;
proxy_set_header        X-Real-IP       $remote_addr;  
#此處需加上:$server_port,防止跳轉到默認80端口
proxy_set_header        Host            $host:$server_port; 
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;  
proxy_pass_request_headers              on;
proxy_set_header X-Forwarded-Proto  $scheme; 
proxy_redirect off;
proxy_connect_timeout      240;
proxy_send_timeout         240;
proxy_read_timeout         240;
        }
}

發佈了311 篇原創文章 · 獲贊 2448 · 訪問量 257萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章