ssl(https)介紹、實驗環境生成密鑰對、nginx配置SSL、https

ssl原理

http與https區別

http默認端口爲80,https默認端口爲443;
http傳輸數據爲明文,https傳輸數據是加密的;

http是HTTP協議運行在TCP之上。所有傳輸的內容都是明文,客戶端和服務器端都無法驗證對方的身份;
https是HTTP運行在SSL/TLS之上,SSL/TLS運行在TCP之上。所有傳輸的內容都經過加密,加密採用對稱加密,但對稱加密的密鑰用服務器方的證書進行了非對稱加密。此外客戶端可以驗證服務器端的身份,如果配置了客戶端驗證,服務器方也可以驗證客戶端的身份。

https工作流程

1.完成TCP三次同步握手
2.客戶端驗證服務器的證書,通過,進入步驟3
3.DH算法協商對稱加密算法的祕鑰、hash算法的祕鑰
4.SSL安全加密碎到協商完成;
5.網頁用加密方式傳輸,用協商的加密算法加密,保證數據完整和不被篡改;




生成ssl密鑰對

正常的網站https使用的ssl證書是需要購買的,我們做實驗就只需要自己生成一個就行了,但是無法在網絡上流通;

下載openssl生成軟件

yum install -y openssl

進入密鑰對目錄

設置祕鑰防止目錄

cd /usr/local/nginx/conf/

生成私鑰

注意這裏要求設置密碼

openssl genrsa -des3 -out tmp.key 2048

轉換爲無密碼的私鑰

注意:這裏會提示要求輸入老私鑰文件tmp.key的密碼;

openssl rsa -in tmp.key -out test.key

刪除老的私鑰
rm -rf tmp.key

生成證書請求文件

需要設置詳細信息,可以直接回車默認

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

設置公鑰有效期,生成公鑰

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

注意:test.crt纔是公鑰,test.csr只是請求文件,test.key是私鑰;


nginx配置SSL

創建ssl配置文件

vim /usr/local/nginx/conf/vhost/ssl.conf

代碼

server
{
    listen 443;                         //設置端口爲443
    server_name shu.com;                //設置網站域名爲shu.com
    index index.html index.php;
    root /data/wwwroot/shu.com;         //設置web的站點目錄
    ssl on;                             //開啓ssl功能
    ssl_certificate test.crt;           //指定公鑰名字
    ssl_certificate_key test.key;       //指定私鑰名字
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}

檢測與生效

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

測試

查看監聽端口,有443則成功

netstat -lntp

使用https://shu.com訪問,成功;

ssl錯誤處理:

在-t檢測時,錯誤提示

nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/vhost/ssl.conf:7
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

提示:nginx不支持ssl,這是因爲我們編譯安裝nginx時是最簡單的模式編譯的,沒有指定ssl;

思路:

重新編譯安裝nginx

查看nginx之前編譯的參數

/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
configure arguments: --prefix=/usr/local/nginx

進入源碼包

cd /usr/local/src/nginx-1.12.2/

查詢ssl需要增加配置

./configure --help |grep -i ssl

結果爲:--with-http_ssl_module

重新編譯nginx

./configure --prefix=/usr/local/nginx --with-http_ssl_module
make && make install

重啓nginx服務

/etc/init.d/nginx restart
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章