标簽(空格分隔): web https
概述
首先明确一個問題, 為什麼要使用https?https是基于SSL的http協定,用戶端和伺服器之間的資料是通過加密的方式傳輸的,差別于http的明文傳輸。設想一下這個場景,在傳輸過程中經過了一個代理,如果使用明文傳輸(http),那麼代理将擷取到傳輸過程中的所有資訊,是以對傳輸的資訊進行加密是很有必要的。實際情況就是這樣, 網絡資源在用戶端與服務端之間傳輸,必然會經過很多層中間代理,使用https能確定傳輸的安全性。
https的詳細資訊介紹不在我們本次讨論的範疇,有興趣的同學可以參考這個: http://blog.jobbole.com/110373/。
回歸到本文的主題,如何如何讓一個網站支援https?
申請證書
所謂證書就是指數字證書,好比一個機構或人的簽名,能夠證明這個結構或人的真實性。我們可以通過國際公認的證書頒發機構申請證書,這樣的證書是可以被用戶端識别的。本文也不做過多的介紹,假定我們證書申請好了,包括兩個部分.key、.pem,大緻情況如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5Gcukja3ATMiVHc2R2c3smN1wWd5kDNptWMhJWMfV2Zh1WavwFOmh2czN2bwEzclVDb5ITN0BHbnZ3Mnp2LchnZuFGazVHaz9CXt92Yu8WdsVnY5pnLjlGdhR3cvw1LcpDc0RHaiojIsJye.png)
具體證書的生成可以參考本文:http://www.cnblogs.com/kyrios/p/tls-and-certificates.html
配置
本文講述通過nginx搭建https環境,可以做如下處理:
Nginx通過yum安裝,配置檔案路徑/etc/nginx
- 1 将證書上傳到虛機,如
/etc/nginx/cert/*
- 2 修改nginx配置,如在中新增一個配置檔案www.shushanfx.com.conf:
server {
listen http2 default_server;
listen [::]: ssl http2 default_server;
# 使用你自己的域名
server_name www.shushanfx.com;
ssl on;
root /shushanfx/nginx/html;
index index.html index.htm;
ssl_certificate "/etc/nginx/cert/214024137860950.pem";
ssl_certificate_key "/etc/nginx/cert/214024137860950.key";
ssl_session_timeout m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1 TLSv1;
ssl_prefer_server_ciphers on;
location / {
}
error_page /html;
location = /x.html {
}
error_page /x.html;
location = /x.html {
}
}
- 3 重新開機nginx
注意事項:
- nginx在預設情況下會關閉https,在搭建時需要確定安裝ngx_http_ssl_module,如果未安裝則需要添加該子產品。即重新編譯生成nginx代碼,并配置參數 –with-http_ssl_module
[[email protected] nginx-1.10.2]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
- 對于自己生成的證書,浏覽器預設是不識别的,需要手動接受加密證書。
參考文獻:
- HTTPS為什麼更安全,先看看這些: http://blog.jobbole.com/110373/
- 淺談https\ssl\數字證書: http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html
- 如何生成https證書: http://www.cnblogs.com/kyrios/p/tls-and-certificates.html