1. 程式人生 > >Nginx的HTTPS服務

Nginx的HTTPS服務

HTTPS實現加密的原理:

客戶端向服務端發起SSL連線請求(這是非對稱加密的),服務端收到連線請求後向客戶端傳送公鑰,這時客戶端收到公鑰後,進行對稱加密併發送給服務端,最後服務端利用對稱祕鑰向客戶端傳輸資料。

1、安裝OpenSSL

yum -y install openssl

2、進入到/etc/nginx/ssl_key目錄下生成key祕鑰

mkdir /etc/nginx/ssl_key

cd /etc/nginx/ssl_key

openssl genrsa -idea -out wen.key 1024  #生成一個名為wen.key的祕鑰
回車後提示要輸入密碼,設定的這個密碼要記住。
再回車就再輸入一次剛剛所設定的密碼

輸入了兩次密碼後能看到生成了一個名為wen.key的檔案

3、生成csr檔案

openssl req -new -key wen.key -out wen.csr   #生成一個csr檔案
回車後可以隨意填寫一下資訊
遇到 A challenge password []:  這一行的時候可以直接回車,設定空密碼
接下來可以一路回車到結束

填完資訊結束後,可以看到當前目錄裡有個wen,csr檔案

4、生成crt檔案

openssl x509 -req -days 3650 -in wen.csr -signkey wen.key -out wen.crt
回車後輸入之前生成key檔案時候的密碼

輸入密碼後,當前目錄就會生成一個crt檔案

5、修改Nginx配置檔案

cd /etc/nginx/conf.d
#切換到Nginx配置檔案目錄

cp default.conf https.conf
#複製一份預設的配置檔案並改名為https.conf

vim https.conf
server {
    listen       443;
    server_name  localhost;
    ssl on;
    ssl_certificate /etc/nginx/ssl_key/wen.crt;
    ssl_certificate_key /etc/nginx/ssl_key/wen.key;
    index index.html index.htm

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /opt/https;
    }

6、在 /opt/https 目錄下建立一個HTML檔案

vim /opt/https/ssl.html
<html>
<head>
	<meta charset="utf-8">
	<title>ssl_key</title>
</head>
<h1>歡迎來到Nginx(ssl_key)</h1>
</body>
</html>

7、關閉Nginx服務

nginx -s stop -c /etc/nginx/nginx.conf

遇到 Enter PEM pass phrase: 則輸入剛剛生成key時所設定的密碼

8、開啟Nginx服務

nginx -c /etc/nginx/nginx.conf

遇到 Enter PEM pass phrase: 則輸入剛剛生成key時所設定的密碼

9、檢視443埠是否開啟

netstat -luntp | grep 443
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      5731/nginx: master  

10、在瀏覽器訪問:  https://虛擬機器的ip/ssl.html