SSL證書,用于加密HTTP協(xié)議岁歉,也就是HTTPS得运。隨著淘寶、百度等網(wǎng)站紛紛實(shí)現(xiàn)全站Https加密訪問锅移,搜索引擎對(duì)于Https更加友好熔掺,加上互聯(lián)網(wǎng)上越來越多的人重視隱私安全,給網(wǎng)站添加SSL證書似乎成為了一種趨勢(shì)非剃。
Let's Encrypt是國外一個(gè)公共的免費(fèi)SSL項(xiàng)目置逻,由 Linux基金會(huì)托管,它的來頭不小备绽,由Mozilla券坞、思科鬓催、Akamai、IdenTrust和EFF等組織發(fā)起恨锚,目的就是向網(wǎng)站自動(dòng)簽發(fā)和管理免費(fèi)證書宇驾,以便加速互聯(lián)網(wǎng)由HTTP過渡到HTTPS,目前Facebook等大公司開始加入贊助行列猴伶。
Let's Encrypt已經(jīng)得了 IdenTrust的交叉簽名课舍,這意味著其證書現(xiàn)在已經(jīng)可以被Mozilla、Google蜗顽、Microsoft和Apple等主流的瀏覽器所信任布卡,你只需要在Web服務(wù)器證書鏈中配置交叉簽名,瀏覽器客戶端會(huì)自動(dòng)處理好其它的一切雇盖,Let's Encrypt安裝簡(jiǎn)單忿等,未來大規(guī)模采用可能性非常大。
Let's Encrypt 的最有價(jià)值的貢獻(xiàn)是它的 ACME 協(xié)議崔挖,第一份全自動(dòng)服務(wù)器身份驗(yàn)證協(xié)議贸街,以及配套的基礎(chǔ)設(shè)施和客戶端。這是為了解決一直以來HTTPS TLS X.509 PKI 信任模型狸相,即證書權(quán)威(Certificate Authority, CA)模型缺陷的一個(gè)起步薛匪。
經(jīng)過我的測(cè)試,推薦通過https://zerossl.com注冊(cè)一個(gè)免費(fèi)的SSL證書脓鹃。
https://zerossl.com 申請(qǐng)免費(fèi)SSL證書步驟的詳細(xì)介紹:
一逸尖、登錄https://zerossl.com,點(diǎn)擊“ONLINE TOOLS" 按鈕瘸右,選擇在線方式申請(qǐng)免費(fèi)SSL證書娇跟。
說明:這里也提供下載軟件苞俘,安裝在本地PC上,運(yùn)行的辦法龄章。但由于這是國外網(wǎng)站吃谣,下載速度較慢,而且在線直接申請(qǐng)很簡(jiǎn)單做裙,不推薦使用本地安裝軟件的方式岗憋。
二、點(diǎn)擊“START"按鈕锚贱,開始申請(qǐng)SSL證書
三、配置
1. “在第1步”的紅色提示處惋鸥,輸入自己的電子郵箱杂穷。這是可選項(xiàng)悍缠,也可以選擇不輸入。
2. “在第2步”的紅色提示處耐量,輸入需要Https加密訪問的網(wǎng)址飞蚓。
3. “在第3步”的紅色提示處,必須勾選"HTTP verification"廊蜒。
4. “在第4步”的紅色提示處趴拧,"Accept ZeroSSL TOS"和"Accept Let's Encrypt SA(pdf)"。
5. “在第5步”的紅色提示處山叮,點(diǎn)擊”NEXT"按鈕著榴。
6. 點(diǎn)擊”NEXT"按鈕后,頁面有彈窗詢問你是否生成沒有"www"的網(wǎng)址的SSL證書格式屁倔。個(gè)人建議點(diǎn)擊“No"按鈕脑又,因?yàn)樵谥蟮尿?yàn)證環(huán)節(jié),這種模式的在線驗(yàn)證有可能失敗锐借。
7. 選擇是否生成沒有"www"的網(wǎng)址的SSL證書格式的彈窗后问麸,開始生成CSR,如上圖所示钞翔,需要等一會(huì)兒严卖。
8 . 如上圖所示,CSR生成后布轿,點(diǎn)擊“NEXT"按鈕哮笆,用于生成account key
9. 如上圖所示,又需要等一會(huì)兒汰扭,生成了下圖所示的RSA Private Key. 建議點(diǎn)擊紅色方框所示的下載按鈕下載已經(jīng)生成RSA Private Key和CSR疟呐,以防之后驗(yàn)證失敗或意外網(wǎng)絡(luò)中斷需要重復(fù)申請(qǐng)RSA Private Key和CSR。點(diǎn)擊“NEXT”按鈕進(jìn)入驗(yàn)證環(huán)節(jié)东且。
四、驗(yàn)證
1. 進(jìn)入驗(yàn)證頁面后本讥,根據(jù)要求使用get方式訪問"http://你的網(wǎng)址Domain/.well-known/acme-challenge/下面頁面File的字符串"時(shí)珊泳,可以得到頁面中"Text"的字符串,以便實(shí)現(xiàn)驗(yàn)證拷沸。
2. 為了達(dá)到驗(yàn)證的目的色查,可以使用2種方式,即在Nginx或Apache中設(shè)置靜態(tài)訪問文件撞芍, 或者修改web程序秧了。我選擇修改程序,以下是node.js的程序代碼的例子:
----------------------------------------------------------------------------------------
router.get('/.well-known/acme-challenge/:id', function(req, res) {
? res.send('T8YJS_____________________________7tw8r5txSg');
});
----------------------------------------------------------------------------------------
3. 在服務(wù)器驗(yàn)證設(shè)置好后序无,在驗(yàn)證頁面點(diǎn)擊“NEXT”按鈕進(jìn)行驗(yàn)證验毡。
五衡创、 導(dǎo)出生成的SSL證書
到了這個(gè)頁面就生成了正式的SSL證書,請(qǐng)下載紅色方塊所示的證書和密鑰晶通。
注意:這個(gè)免費(fèi)SSL證書有效期為90天璃氢,到期后可以免費(fèi)續(xù)期,即重復(fù)這個(gè)注冊(cè)過程狮辽,再次生成新的免費(fèi)SSL證書一也。
注意:下載的證書文件的名稱是"domain-crt.txt",需要修改名稱為"domain.crt"喉脖。
注意:下載的密鑰的名稱是domain-key.txt椰苟,需要修改名稱為"domain.key"。
注意:記得一定要修改這兩個(gè)文件树叽,名稱無所謂舆蝴,但證書文件的文件擴(kuò)展名必須是".crt", 密鑰的文件擴(kuò)展名必須是".key"。我在這里踩了坑菱皆,沒有改擴(kuò)展名须误,造成nginx找不到這兩個(gè)文件。
六仇轻、設(shè)置web服務(wù)器
我的服務(wù)器用的是nginx京痢,nginx的配置文件"nginx.conf"的代碼如下:
--------------------------------------------------------------------------------------
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
???? worker_connections 1024;
}
http {
??? log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '
???????????????????????????????? '$status $body_bytes_sent "$http_referer" '
????????????????????????????????? '"$http_user_agent" "$http_x_forwarded_for"';
??? access_log? /var/log/nginx/access.log? main;
??? sendfile? ? ? ? ? ? on;
??? tcp_nopush? ? ? ? ? on;
??? tcp_nodelay? ? ? ? on;
??? keepalive_timeout? 65;
??? types_hash_max_size 2048;
??? include? ? ? ? ? ? /etc/nginx/mime.types;
??? default_type? ? ? ? application/octet-stream;
??? server {
???????? listen? 80;
???????? server_name? 需要訪問的網(wǎng)址;
? ? ? ? rewrite ^(.*)$ https://$host$1 permanent;
??????? #強(qiáng)制見80端口的訪問轉(zhuǎn)到443的加密端口
??????? location / {
???????????? proxy_set_header X-Real-IP $remote_addr;
???????????? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
???????????? proxy_set_header Host $http_host;
???????????? proxy_set_header X-NginX-Proxy true;
???????????? proxy_pass http://localhost:2000/;
???????????? proxy_redirect off;
???????? }
??? }
??? server {
??????? listen 443 ssl;
? ? ? ? server_name 需要訪問的網(wǎng)址;
??????? ssl on;
? ? ? ? ssl_certificate 服務(wù)器存放ssl證書文件絕對(duì)路徑/domain.crt;
??????? ssl_certificate_key 服務(wù)器存放ssl證書密鑰文件絕對(duì)路徑/domain.key;
??????? location / {
??????????? proxy_set_header X-Real-IP $remote_addr;
??????????? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
??????????? proxy_set_header Host $http_host;
??????????? proxy_set_header X-NginX-Proxy true;
??????????? proxy_pass http://localhost:2000;
??????????? proxy_redirect off;
??????? }
??? }
}
----------------------------------------------------------------------------------------
對(duì)于Apache或者IIS的設(shè)置,我不太熟悉篷店,請(qǐng)大家自行百度吧祭椰。
我也研究了一下其它提供免費(fèi)SSL證書網(wǎng)站,向大家做個(gè)介紹疲陕,僅供參考:
StartSSL是StartCom公司旗下的SSL證書方淤,應(yīng)該算是免費(fèi)SSL證書中的“鼻祖”,最早提供完全免費(fèi)的SSL證書并且被各大瀏覽器所支持的恐怕就只有StartSSL證書了蹄殃。任何個(gè)人都可以從StartSSL中申請(qǐng)到免費(fèi)一年的SSL證書携茂。如果你有看新聞,也許已經(jīng)知道了“Mozilla正式提議將停止信任 WoSign 和 StartCom 簽發(fā)的新證書”诅岩,對(duì)于StartSSL請(qǐng)觀察事態(tài)發(fā)展后再謹(jǐn)慎使用讳苦。
COMODO官網(wǎng)只有免費(fèi)90天的SSL證書試用申請(qǐng),這個(gè)COMODOPositiveSSL證書來自UK2公司吩谦,VPS.net等就是UK2公司旗下的產(chǎn)品鸳谜。目前獲取UK2提供的免費(fèi)COMODO PositiveSSL不需要額外的操作,只需要你先把域名解析到UK2公司的服務(wù)器上式廷,然后在網(wǎng)頁上獲取SSL證書并下載咐扭,最后你就可以解除域名解析抒寂,同時(shí)將下載的域名證書文件上傳到服務(wù)器配置SSL即可懊渡。不過由于是UK2提供的COMODO PositiveSSL免費(fèi)證書踏兜,如果你沒有用他們的主機(jī)總歸不知道哪一天會(huì)出問題的贰谣。
CloudFlare提供的免費(fèi)SSL證書是UniversalSSL,即通用SSL穗慕,用戶無需向證書發(fā)放機(jī)構(gòu)申請(qǐng)和配置證書就可以使用的SSL證書饿敲,CloudFlare向所有用戶(包括免費(fèi)用戶)提供SSL加密功能。不過Universal SSL的服務(wù)對(duì)免費(fèi)用戶有限制逛绵,CloudFlare只支持?jǐn)U展支持Server Name Indication(SNI)協(xié)議的現(xiàn)代瀏覽器怀各,這意味著它不支持IE6及之前版本、運(yùn)行Android 2.2或更舊版本的Android瀏覽器术浪。
Wosign沃通是國內(nèi)一家提供SSL證書服務(wù)的網(wǎng)站瓢对,其免費(fèi)的SSL證書申請(qǐng)比較簡(jiǎn)單,在線開通胰苏,一個(gè)SSL證書只能對(duì)應(yīng)一個(gè)域名硕蛹,支持證書狀態(tài)在線查詢協(xié)議(OCSP)。不過硕并,受“Mozilla正式提議將停止信任WoSign 和 StartCom 簽發(fā)的新證書”的影響法焰,請(qǐng)觀察后再?zèng)Q定是否使用。
騰訊云DV SSL 域名型證書由賽門鐵克提供自動(dòng)審核認(rèn)證倔毙,快速簽發(fā)埃仪,支持自動(dòng) CSR 生成、域名身份 DNS 自動(dòng)驗(yàn)證陕赃,一步提交申請(qǐng)卵蛉,審核簽發(fā)流程全自動(dòng)∶纯猓可以一鍵部署到騰訊云資源傻丝。需要注意的是必須使用騰訊云才能夠使用DV SSL 域名型證書,騰訊云可是收費(fèi)的诉儒。
360網(wǎng)站衛(wèi)士葡缰、百度云加速與Symantec等合作推出了免費(fèi)的SSL證書,其實(shí)類似于上面的騰訊云DV SSL證書忱反,只不過360網(wǎng)站衛(wèi)士如果要使用SSL證書必須得實(shí)名認(rèn)證而且還得使用他們家的CDN泛释。而百度云加速則只能使用百度云服務(wù)器才可以申請(qǐng)免費(fèi)SSL證書。