天天看點

tomcat配置https以及nginx使用ssl子產品配置HTTPS

如果希望 Tomcat 支援 Https,主要的工作是配置 SSL 協定

1.生成安全證書

2.配置tomcat

1.1 生成安全證書

第一個 建立證書的指令:
keytool -genkeypair -alias chenzhiyong -dname "CN=test,OU=HE,O=CUI,L=SHENGZHEN,ST=GUANGDONG,C=CN" -keyalg RSA -keystore D:/logs/chen.keystore -validity   
//第一次寫成了 3650000 算不出來日期


keytool -export -alias chenzhiyong -keystore D:/logs/chen.keystore -file D:/logs/chen.crt -storepass 



keytool -import -v -trustcacerts -alias chenzhiyong -file D:/logs/chen.crt -keystore ../jre/lib/security/cacerts   
           

1.2 配置tomcat 的 server.xml

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443"/>

<Connector SSLEnabled="true" clientAuth="false" maxThreads="150" port="443" protocol="org.apache.coyote.http11.Http11Protocol" scheme="https" secure="true" sslProtocol="TLS"
keystoreFile="D:\\software\\apache-tomcat-7.0.65\\mykey" keystorePass="YOURPASSWORDHERE"/>
   <Connector port="8009" protocol="AJP/1.3" redirectPort="443"/>
           

nginx使用ssl子產品配置HTTPS

實驗步驟:

1.首先確定機器上安裝了openssl和openssl-devel

#yum install openssl
#yum install openssl-devel
           

2.建立伺服器私鑰,指令會讓你輸入一個密碼:

openssl genrsa -des3 -out server.key <br>                                                   //生成私鑰
#因為以後要給nginx使用。每次reload nginx配置時候都要你驗證這個PAM密碼的.由于生成時候必須輸入密碼,你可以輸入後 再删掉。
           

3.建立簽名請求的證書(CSR):

4.在加載SSL支援的Nginx并使用上述私鑰時除去必須的密碼:

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key                                  //除去密碼以便reload詢問時不需要密碼
           

5.配置nginx

最後标記證書使用上述私鑰和CSR:

6.修改Nginx配置檔案,讓其包含新标記的證書和私鑰:

#vim /usr/local/nginx/conf/nginx.conf
http {

        include server/*.cn;
}
           

7.修改Nginx配置檔案,讓其包含新标記的證書和私鑰:

#vim /usr/local/nginx/server/www.localhost.cn
server {
        listen       ;                                                                       //監聽端口為443
        server_name  www.localhost.cn;

        ssl                  on;                  //開啟ssl
        ssl_certificate      /etc/pki/tls/certs/server.crt;      //證書位置
        ssl_certificate_key  /etc/pki/tls/certs/server.key;      //私鑰位置
        ssl_session_timeout  m;
        ssl_protocols  SSLv2 SSLv3 TLSv1;            //指定密碼為openssl支援的格式
        ssl_ciphers  HIGH:!aNULL:!MD5;              //密碼加密方式
        ssl_prefer_server_ciphers   on;             //依賴SSLv3和TLSv1協定的伺服器密碼将優先于用戶端密碼

        location / {
            root   html;                        //根目錄的相對位置
            index  index.html index.htm;
        }
    }
           

8.啟動nginx伺服器.

如果出現“[emerg] 10464#0: unknown directive “ssl” in /usr/local/nginx-0.6.32/conf/nginx.conf:74”則說明沒有将ssl子產品編譯進nginx,在configure的時候加上“–with-http_ssl_module”即可

9.測試網站是否能夠通過https通路

另外還可以加入如下代碼實作80端口重定向到443

server {
listen ;
server_name www.localhost.cn;
#rewrite ^(.*) https://$server_name$1 permanent;
rewrite ^(.*)$  https://$host$1 permanent;
}
           

過以下配置,可以設定一個虛拟主機同時支援HTTP和HTTPS

listen ;
listen  default ssl;
           

簡單描述就是: 伺服器配置, 僅需修改nginx host配置

2.1、進入nginx目錄建立伺服器私鑰,指令會讓你輸入一個密碼:

openssl genrsa -des3 -out server.key 1024

2.2、建立簽名請求的證書(CSR):

openssl req -new -key server.key -out server.csr

2.3、在加載SSL支援的Nginx并使用上述私鑰時除去必須的密碼

cp server.key server.key.org

openssl rsa -in server.key.org -out server.key

2.4、最後标記證書使用上述私鑰和CSR

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

server {
        server_name baidu.com;
        listen ;
        ssl on;
        ssl_certificate /user/local/nginx/conf/server.crt;
        ssl_certificate_key /user/local/nginx/conf/server.key;
       location / {
               set $fixed_destination $http_destination;
               proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header Destination $fixed_destination;
              proxy_pass http://SERVERIP:TOMCATPORT;
             /***如果有多個***/
           /***
           if ($host ~* '(baidu.com)'){
               proxy_pass http://SERVERIP:TOMCATPORT;
           }
          **/
          expires ;
      }
         error_page     /x.html;
         location = /x.html {
             root html;
         }
}
server{
          listen ;
         server_name baidu.com;
        location / {
               set $fixed_destination $http_destination;
               proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header Destination $fixed_destination;
               proxy_pass http://SERVERIP:TOMCATPORT;
               expires ;
        }
       error_page     /x.html;
       location = /x.html {
          root html;
     }
}
           

linux nginx啟動 重新開機 關閉指令

啟動操作

nginx -c /usr/local/nginx/conf/nginx.conf 
           

-c參數指定了要加載的nginx配置檔案路徑

停止操作

停止操作是通過向nginx程序發送信号來進行的

步驟1:查詢nginx主程序号

在程序清單裡 面找master程序,它的編号就是主程序号了。

步驟2:發送信号

從容停止Nginx:
kill -QUIT 主程序号  
例如:kill -QUIT 
快速停止Nginx:
kill -TERM 主程序号  
強制停止Nginx:
kill - 主程序号  
           

另外, 若在nginx.conf配置了pid檔案存放路徑則該檔案存放的就是Nginx主程序号,如果沒指定則放在nginx的logs目錄下。有了pid文 件,我們就不用先查詢Nginx的主程序号,而直接向Nginx發送信号了,指令如下:

kill -信号類型’/usr/local/nginx/logs/nginx.pid’

平滑重新開機

如果更改了配置就要重新開機Nginx,要先關閉Nginx再打開?不是的,可以向Nginx 發送信号,平滑重新開機。

平滑重新開機指令:

kill -HUP 住進稱号或程序号檔案路徑

或者使用

/usr/nginx/sbin/nginx -s reload  
           

注意,修改了配置檔案後最好先檢查一下修改過的配置檔案是否正 确,以免重新開機後Nginx出現錯誤影響伺服器穩定運作。判斷Nginx配置是否正确指令如下:

nginx -t -c /usr/nginx/conf/nginx.conf 
           

或者

繼續閱讀