centos的nginx支持ssl


 

首先看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
View Code

 

輸入國家系列信息:

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;
        }

    }
View Code

 

如此,https訪問成功


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM