現(xiàn)在,你應(yīng)該能在訪問(wèn)https://konklone.com的時(shí)候,在地址欄里看到一個(gè)漂亮的小綠鎖了,因?yàn)槲野堰@個(gè)網(wǎng)站換成了HTTPS協(xié)議。一分錢沒花就搞定了。
為什么要使用HTTPS協(xié)議:
雖然SSL并不是無(wú)懈可擊的,但是我們應(yīng)該盡可能提高竊聽成本
加密通訊不應(yīng)心存僥幸,所有連接都應(yīng)被加密
福利:使用了HTTPS之后,如果網(wǎng)站的訪客是從其他已經(jīng)使用了HTTPS的網(wǎng)站上跳轉(zhuǎn)過(guò)來(lái),你就能在Google Analytics中獲取更完整的來(lái)源信息(比如Hacker News)。
本文將為您說(shuō)明,如何通過(guò)開啟您網(wǎng)站上的HTTPS協(xié)議來(lái)為構(gòu)建和諧、安全的互聯(lián)網(wǎng)添磚加瓦。盡管步驟有些多,但是每個(gè)步驟都很簡(jiǎn)單,聰明的你應(yīng)該能在1個(gè)小時(shí)之內(nèi)搞定這個(gè)事情。
概要: 目前想在 web 上使用 HTTPS 的話, 你需要獲得一個(gè)證書文件, 該證書由一個(gè)受瀏覽器信任的公司所簽署. 一旦你獲得了它, 你就在你的 web 服務(wù)器上指定其所在的位置, 以及與你關(guān)聯(lián)的私鑰的位置, 并開啟 443 端口準(zhǔn)備使用. 你不需要是一個(gè)專業(yè)級(jí)軟件開發(fā)人員來(lái)做這個(gè), 但是你需要熟練使用命令行操作, 并能熟練的配置你操控的服務(wù)器.
大部分的證書都是要錢的, 但是我聽從了 Micah Lee 的建議后用了StartSSL. 那也是EFF正在使用的, 而且他們針對(duì)個(gè)人的基礎(chǔ)型證書是免費(fèi)的. (他們會(huì)要求你去支付一個(gè)更高級(jí)的證書如果你的站點(diǎn)實(shí)際上是商業(yè)站點(diǎn)的話.) 值得注意的是他們的網(wǎng)站在一開始使用的時(shí)候很難用 — 尤其是如果你對(duì)于潛藏在 SSL 幕后的概念和術(shù)語(yǔ)還很陌生的話(就像我一樣). 幸運(yùn)的是, 其實(shí)并不像想象中的那么難, 只是會(huì)有很多細(xì)微的步驟而已.
下面, 我們將一步步的從注冊(cè)開始直到創(chuàng)建屬于你的證書. 我們也會(huì)覆蓋在 nginx 環(huán)境下的安裝知識(shí), 但是你可以在任何你希望使用的 web 服務(wù)器上使用該證書.
注冊(cè)StartSSL
開始,訪問(wèn)注冊(cè)頁(yè)面輸入你的信息
他們會(huì)通過(guò)email發(fā)給你個(gè)驗(yàn)證碼。在這期間不要關(guān)閉選項(xiàng)卡或?yàn)g覽器 , 所以你只要保持打開狀態(tài),知道獲得驗(yàn)證碼并貼上它。
等待幾分鐘就能獲得整數(shù)了。一旦通過(guò)申請(qǐng),他們會(huì)發(fā)送一封帶有特殊連接和驗(yàn)證碼的email給你
完成之后會(huì)給你一個(gè)私人密鑰,在他們的服務(wù)器上生成的私人密鑰,但這不是你創(chuàng)建SSL證書的密鑰.他們用這個(gè)私人密鑰生成一個(gè)單獨(dú)的"認(rèn)證證書",以后你可以用它來(lái)登錄StartSSL的控制面板,下面你將要為你的網(wǎng)站創(chuàng)建一個(gè)整數(shù)了。
最后他們會(huì)叫你安裝證書
在你的瀏覽器上安裝驗(yàn)證證書
要是你用的的Chrome 你將會(huì)在瀏覽器頭看到下面信息
再次,這只是證明你在登錄StartSSL 以后通過(guò)你的郵件里的地址跳轉(zhuǎn)到這個(gè)頁(yè)面
現(xiàn)在,我們需要使得StartSSL相信我們擁有自己的域名,我們想要為他生成一個(gè)新的證書。從控制面板中,點(diǎn)擊“Validations Wizard”,然后在下拉表單中選擇”Domain Name Validation“選項(xiàng)。
輸入你的域名。
接下來(lái),你要選擇一個(gè)email地址,StartSSL將要用它來(lái)核實(shí)你的域名地址。正如你所見的,StartSSL將會(huì)相信你是擁有這個(gè)域名的,如果你能用域名控制webmaster@,postmaster@,orhostmaster@或者是你的email地址已被列為域名注冊(cè)人信息的一部分(就我而言,就是當(dāng)前的這個(gè)[email protected])。然后選擇一個(gè)你可以收到郵箱的郵箱地址。
他們會(huì)給你發(fā)送一個(gè)驗(yàn)證碼,你可以把它輸入到文本框中來(lái)驗(yàn)證你的域名。
生成證書
現(xiàn)在 StartSSL知道你是誰(shuí)了,知道了你的域名,你可以用你的私人密鑰來(lái)生成證書了。
這時(shí)StartSSL能為你生成一個(gè)私人密鑰— 在他們常見問(wèn)題中(FAQ)像你保證他們只生成高質(zhì)量的隨機(jī)密鑰,并且以后不會(huì)作為其他的密鑰— 你也可以自己創(chuàng)建一個(gè),很簡(jiǎn)單。
這將會(huì)引導(dǎo)你通過(guò)命令行創(chuàng)建via。當(dāng)你選擇 StartSSL的引導(dǎo),你可以按引導(dǎo)步奏進(jìn)行備份,在你為域名申請(qǐng)證書的地方。
打開終端,創(chuàng)建一個(gè)新的2048-bit RSA 密鑰
openssl genrsa -aes256 -out my-private-encrypted.key 2048
會(huì)讓你輸入一個(gè)密碼.選擇一個(gè),并記住它 .這會(huì)產(chǎn)生一個(gè)加密的私鑰 ,如果你需要通過(guò)網(wǎng)絡(luò)轉(zhuǎn)移你的密鑰,就可以用這個(gè)加密的版本..
下一步是將其解碼, 從而通過(guò)它生成一個(gè)“證書簽發(fā)請(qǐng)求”. 使用如下命令來(lái)解碼你的私鑰:
openssl rsa -in my-private-encrypted.key -out my-private-decrypted.key
然后, 生成一個(gè)證書簽發(fā)請(qǐng)求:
openssl req -new -key my-private-decrypted.key -out mydomain.com.csr
回到 StartSSL 的控制面板并單擊 “Certificates Wizard” 標(biāo)簽, 然后在下拉列表里選擇 “Web Server SSL/TLS Certificate”.
由于我們已經(jīng)生成了自己的私鑰, 所以你可以在此單擊 “Skip”.
然后, 在文本框內(nèi)粘貼入我們之前生成的 .csr 文件里面的內(nèi)容.
如果一切正常的話, 它就會(huì)提示你說(shuō)已經(jīng)收到了你發(fā)出的證書簽發(fā)請(qǐng)求.
現(xiàn)在, 選擇你之前已經(jīng)驗(yàn)證過(guò)的計(jì)劃使用證書的域名.
它會(huì)要求你添加一個(gè)子域, 我給自己的添加的是 “www”.
它會(huì)要求你進(jìn)行確認(rèn), 如果看上去沒錯(cuò)的話, 單擊 “Continue”.
注意:在你等待通過(guò)郵件獲得許可的那兒, 你有可能會(huì)遇到一個(gè) "需要額外的驗(yàn)證!" 的步驟, 第一次的時(shí)候我沒有遇到, 但是第二次的時(shí)候遇到了, 然后我的許可在大概30分鐘左右被批準(zhǔn), 一旦經(jīng)過(guò)許可, 你需要去單擊 "Tool Box" 標(biāo)簽頁(yè)并通過(guò) "Retrieve Certificate" 來(lái)獲取你的證書.
然后應(yīng)該會(huì)是這樣 — 你的證書將出現(xiàn)在一個(gè)文本域里面供你去復(fù)制并粘貼到一個(gè)文件里去, 給這個(gè)文件隨便起個(gè)你想叫的名字就行, 但是在本指南接下來(lái)的部分里將以 mydomain.com.crt 這個(gè)名字去引用它(譯者注, 原文為 asmydomain.com.crt, 參照下文 mydomain.com.crt 名稱來(lái)看, 應(yīng)為as后未加空格導(dǎo)致的拼寫錯(cuò)誤).
在nginx中安裝證書
首先, 確認(rèn)443端口在你的web服務(wù)器中已經(jīng)打開。許多web托管已經(jīng)默認(rèn)為你打開了該端口。如果你使用Amazon AWS,你需要確在你的實(shí)例安全組中443端口是開放的。
下一步,我們將要?jiǎng)?chuàng)建web服務(wù)器要使用的“證書鏈”。它包含你的證書和StartSSL中介證書(將StartSSL的跟證書包含進(jìn)來(lái)不是必要的,因?yàn)闉g覽器已經(jīng)包含了該證書)StartSSL下載中介證書:
wget http://www.startssl.com/certs/sub.class1.server.ca.pem
然后將你的證書和他們的證書連接起來(lái):
cat mydomain.com.crt sub.class1.server.ca.pem > unified.crt
最后,告訴你的Web服務(wù)器你的統(tǒng)一證書和你的解密密鑰。我使用nginx——下面是你需要的nginx的最要配置。它使用301永久重定向?qū)⑺械腍TTP請(qǐng)求從定向?yàn)镠TTPS 請(qǐng)求,然后指引服務(wù)器使用證書要密鑰。
- server {
- listen 80;
- server_name konklone.com;
- return 301 https://$host$request_uri;
- }
- server {
- listen 443 ssl;
- server_name konklone.com;
- ssl_certificate /path/to/unified.crt;
- ssl_certificate_key /path/to/my-private-decrypted.key;
- }
- # for a more complete, secure config:
- # https://gist.github.com/konklone/6532544
你可以獲得一個(gè)更全面的nigix配置,他打開了 SPDY,HSTS, SSLsession resumption, 和Perfect Forward Secrecy.
Qualys‘ SSL 實(shí)驗(yàn)室提供了完美的SSL測(cè)試工具,你可以通過(guò)它看到你正在做的事情.
現(xiàn)在, 檢驗(yàn)?zāi)銓?duì)nginx的配置是正確的(這也檢驗(yàn)密鑰和證書工作正常):
sudo nginx -t
然后啟動(dòng)nginx:
sudo service nginx restart
稍等片刻,在你的瀏覽器中測(cè)試。如果進(jìn)展順利,會(huì)在你的瀏覽器中出現(xiàn)
混合內(nèi)容警告
如果你的網(wǎng)站在https協(xié)議中運(yùn)行,你要確保所有鏈接資源— 圖片,樣式表CSS, JavaScript等,都是HTTPS協(xié)議鏈接.如果你不這樣做,用戶的瀏覽器將無(wú)法正常訪問(wèn)。比較新的火狐瀏覽器,將確保不安全的內(nèi)容出現(xiàn)在一個(gè)安全頁(yè)面。
幸運(yùn)的是幾乎每一個(gè)主要服務(wù)代碼都會(huì)嵌入一個(gè)https版本,大多數(shù)情況下它會(huì)自動(dòng)處理(包括Google Analytics and Typekit). 你應(yīng)該為其他人考慮一些個(gè)別的情況。
備份您的密鑰和證書
不要忘記備份您的 SSL 證書,和它的加密私鑰。我把它們放在一個(gè)私有的 git 庫(kù)里面,并放一個(gè)說(shuō)明文本文件來(lái)描述每個(gè)文件以及創(chuàng)建該文件的程序或者命令。
您應(yīng)當(dāng)也備份您的認(rèn)證證書,您用這些證書在 StartSSL 上登錄。StartSSL 的 FAQ 頁(yè)面已經(jīng)說(shuō)明— 它是您從自己的瀏覽器中導(dǎo)出的一個(gè)包含了證書和密鑰的 .p12 文件。
本文地址:http://www.oschina.net/translate/switch-to-https-now-for-free
原文地址:https://konklone.com/post/switch-to-https-now-for-free