首先看centos是否支持ssl
輸入:openssl version
如無
則去 http://slproweb.com/products/Win32OpenSSL.html 尋找
生成私鑰后面的1024可加密128字節長度的內容,2048可加密256字節長度的內容
對應的命令如下:

在ssl的根目錄下操作:
#此步用於生成私鑰,會提示輸入密碼,密碼后面步驟需要用到;jason.key為私鑰的名字,文件名可自己定
openssl genrsa -des3 -out jason.key 1024
#此步用於生成csr證書,jason.key為上一步驟生成的私鑰名,jason.csr為證書,證書文件名可自定
#在此步過程中,會交互式輸入一系列的信息(所在國家、城市、組織等),其中Common Name一項代表nginx服務訪問用到的域名,我這里是本地測試,所以可以隨意定一個jason.com,並在本地host文件中將此域名映射為127.0.0.1
openssl req -new -key jason.key -out jason.csr
#此步用於去除訪問密碼,如果不執行此步,在配置了ssl后,nginx啟動會要求輸入密碼
#jason.key為需要密碼的key,jason-np.key為去除訪問密碼的key文件
#操作過程中會要求輸入密碼,密碼為生成key文件時的密碼
openssl rsa -in jason.key -out jason-np.key
#此步用於生成crt證書
#jason.crt為第2步生成的csr證書名稱,jason.crt為要生成的證書名稱
openssl x509 -req -days 366 -in jason.csr -signkey jason-np.key -out jason.crt
輸入國家系列信息:
server {
listen 443 ssl;
server_name service.youhui168.xin;
ssl on;
ssl_certificate ../ssl/shopService.crt;
ssl_certificate_key ../ssl/shopService-np.key;
#ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
error_log /usr/local/nginx/logs/error2.log error;
location / {
proxy_redirect off;
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_pass http://localhost:8080/service/;
}
}
注意阿里雲里面要配置好對應的入方向的443的端口規則
http://localhost:8080/service/ 對應的是tomcat啟動的那個service項目
如此,https訪問成功
如還不成,應該是服務器的防火牆問題了:
netstat -anp
查看防火牆開的端口

發現已經在監聽了,那肯定是配置問題。
檢查配置沒問題,重新生成證書等方法也還是無法訪問,甚至在別的機器上https的配置copy過來依然無法訪問
冷靜下來想想,nginx都沒有返回狀態嗎,直接無法連接。這到底請求到了嗎?
只能進入防火牆配置文件看看了 vim /etc/sysconfig/iptables
問題就在這里了,開放端口一定要在
-A INPUT -j REJECT –reject-with icmp-host-prohibited
這句的前面,的前面,的前面!!!
原因是這條規則的作用是拒絕所有-j REJECT 在iptables幫助文檔里面有一下說明This is used to send back an error packet in response to the matched packet
就是表明拒絕你,並返回一個錯誤連接信息。請求沒到nginx那,肯定沒有狀態碼返回,同時你的瀏覽器返回的只能是無法連接。
===============================================================
另一個test例子
證書同上配置
nginx的配置是:

server {
listen 443 ssl;
server_name test.youhui168.xin;
ssl_certificate ../ssl/test.crt;
ssl_certificate_key ../ssl/test-np.key;
#ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_redirect off;
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_pass http://localhost:80/;
}
}
server {
listen 80;
server_name test.youhui168.xin;
root /home/wwwroot/test;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE open_basedir=$document_root:/tmp/:/proc/;
include fastcgi_params;
}
}
如此,https訪問成功