微信小程序已經全面要求使用HTTPS服務了,還有蘋果商店也是,所以,實現網站HTTPS已經很有必要。要實現HTTPS就需要一個SSL證書,證書大部分都很貴,不過也有一些免費的證書服務供個人開發者使用。
#SSL證書#
HTTPS連接基於SSL證書,SSL證書一般可以分成以下三大類:
- DV SSL(域名型);
- OV SSL(企業型);
- EV SSL(增強型);
一般每種類型下面又分成不同版本(價格不同),比如企業型證書一般又分成:
- 普通版企業型證書;
- 專業版企業型證書;
- 普通版企業型通配符證書;
- 專業版企業型通配符證書;
一、域名型SSL證書
即證書頒布機構只對域名的所有者進行在線檢查,通常是驗證域名下某個指定文件的內容,或者驗證與域名相關的某條TXT記錄。
瀏覽器普通加鎖標記。
二、企業型SSL證書
需要購買者提交組織機構資料和單位授權信等在官方注冊的憑證,證書頒發機構在簽發SSL證書前不僅僅要檢驗域名所有權,還必須對這些資料的真實合法性進行多方查驗,只有通過驗證的才能頒發SSL證書。
瀏覽器普通加鎖標記。
三、增強型SSL證書
驗證流程更加具體詳細,驗證步驟更多,這樣一來證書所綁定的網站就更加的可靠、可信。它跟普通SSL證書的區別也是明顯的,安全瀏覽器的地址欄變綠,如果是不受信的SSL證書則拒絕顯示,如果是釣魚網站,地址欄則會變成紅色,以警示用戶。
#常見CA廠商#
目前常見的證書頒發機構主要有:
Symantec
|
GeoTust
|
TrustAsia
|
Let's Encrypt
|
|
品牌定位 | 全球第一 | 全球第二 | 亞太區專業品牌 | 全球新興品牌 |
價格 | 高級品牌,價位高 | 價格稍低 | 價格稍低,含免費 | 免費 |
證書類型 | 企業型/增強型,單域名、多域名、泛域名證書 | 企業型/增強型,單域名、多域名、泛域名證書 | 域名型,單域名、多域名、泛域名證書 | 域名型,單域名證書 |
客戶群體 | 銀行、金融、保險、醫療、電子商務等 | 傳統行業、企業、教育、公共部門等 | 公共部門、非盈利項目、開源項目等 | 個人網站/博客,非盈利項目、開源項目等 |
而當前國內提供SSL證書服務的雲廠商主要有(加粗為免費域名型證書):
支持品牌
|
支持證書種類
|
免費種類
|
|
阿里 | Symantec、GeoTrust、CFCA(國內CA) | 21 | 1 |
騰訊 | Symantec、GeoTrust、TrustAsia | 17 | 1 |
百度 | TrustAsia | 1 | 1 |
又拍 | Symantec、GeoTrust、TrustAsia、Let's Encrypt | 22 | 2 |
七牛 | Symantec、GeoTrust、TrustAsia | 15 | 1 |
金山 | Symantec、GeoTrust | 14 | 1 |
#申請免費證書#
下面以申請阿里雲免費證書為例,不得不說,阿里雲的免費證書申請簡直是跟客戶在玩捉迷藏。
1)首先,進入默認證書購買頁面,產品-安全-CA證書。
2)點擊選擇“Symantec”。
3)回到第一行,選擇增強型OV SSL。
這個時候才看到“免費型DV SSL”的標簽,點擊進去申請即可。
順帶一提,由於免費DV SSL證書只能對應一個域名一個,所以可以一次性申請多幾個。(筆者就一次性申請了10個)
#安裝證書#
申請證書通過后,需要把證書安裝到服務器端。申請的過程中需要域名映射驗證,根據阿里雲提示做即可,這里不再贅述。
證書申請通過后,下載證書,以Nginx為例,有兩個文件,分別是.pem證書文件和.key證書私鑰文件。
1)在nginx下創建cert目錄,並且把證書文件和私鑰文件上傳到該目錄下。
# cd /usr/local/nginx # mkdir cert # chown www:www cert # ls -l cert/ total 8 -rw------- 1 www www 1678 Mar 31 16:08 abc.com.key -rw------- 1 www www 3678 Mar 31 16:08 abc.com.pem
2)配置nginx.conf文件。
# vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name abc.com www.abc.com; rewrite ^/(.*)$ https://abc.com/$1 permanent; } server { listen 443; server_name abc.com www.abc.com; index index.html; root /data/www/www.abc.com; ssl on; ssl_certificate ../cert/abc.pem; ssl_certificate_key ../cert/abc.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; }
3)最后重啟nginx即可。