如果希望 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
或者