轉自http://www.jb51.net/article/68679.htmnginx
如今,你應該能在訪問https://konklone.com的時候,在地址欄裏看到一個漂亮的小綠鎖了,由於我把這個網站換成了HTTPS協議。一分錢沒花就搞定了。git
爲何要使用HTTPS協議:github
本文將爲您說明,如何經過開啓您網站上的HTTPS協議來爲構建和諧、安全的互聯網添磚加瓦。儘管步驟有些多,可是每一個步驟都很簡單,聰明的你應該能在1個小時以內搞定這個事情。web
概要: 目前想在 web 上使用 HTTPS 的話, 你須要得到一個證書文件, 該證書由一個受瀏覽器信任的公司所簽署. 一旦你得到了它, 你就在你的 web 服務器上指定其所在的位置, 以及與你關聯的私鑰的位置, 並開啓 443 端口準備使用. 你不須要是一個專業級軟件開發人員來作這個, 可是你須要 熟練使用命令行操做, 並能熟練的配置 你操控的服務器.瀏覽器
大部分的證書都是要錢的, 可是我遵從了 Micah Lee 的 建議 後用了 StartSSL. 那也是 EFF 正在使用的, 並且 他們針對我的的基礎型證書是免費的. (他們會要求你去支付一個更高級的證書若是你的站點其實是商業站點的話.) 值得注意的是他們的網站在一開始使用的時候很難用 — 尤爲是若是你對於潛藏在 SSL 幕後的概念和術語還很陌生的話(就像我同樣). 幸運的是, 其實並不像想象中的那麼難, 只是會有不少細微的步驟而已.安全
下面, 咱們將一步步的從註冊開始直到建立屬於你的證書. 咱們也會覆蓋在 nginx 環境下的安裝知識, 可是你能夠在任何你但願使用的 web 服務器上使用該證書.bash
他們會經過email發給你個驗證碼。在這期間不要關閉選項卡或瀏覽器 , 因此你只要保持打開狀態,知道得到驗證碼並貼上它。
服務器
等待幾分鐘就能得到整數了。一旦經過申請,他們會發送一封帶有特殊鏈接和驗證碼的email給你網絡
完成以後會給你一個私人密鑰,在他們的服務器上生成的私人密鑰,但這不是你建立SSL 證書的密鑰.他們用這個私人密鑰生成一個單獨的"認證證書",之後你能夠用它來登陸StartSSL的控制面板,下面你將要爲你的網站建立一個整數了。
session
最後他們會叫你安裝證書
在你的瀏覽器上安裝驗證證書
要是你用的的Chrome 你將會在瀏覽器頭看到下面信息
再次,這只是證實你在登陸StartSSL 之後經過你的郵件裏的地址跳轉到這個頁面
如今,咱們須要使得StartSSL相信咱們擁有本身的域名,咱們想要爲他生成一個新的證書。從控制面板中,點擊「Validations Wizard」,而後在下拉表單中選擇」Domain Name Validation「選項。
輸入你的域名。
接下來,你要選擇一個email地址,StartSSL將要用它來覈實你的域名地址。正如你所見的,StartSSL將會相信你是擁有這個域名的, 若是你能用域名控制 webmaster@,postmaster@, orhostmaster@或者是你的email地址已被列爲域名註冊人信息的一部分(就我而言,就是當前的這個 konklone@gmail.com)。而後選擇一個你能夠收到郵箱的郵箱地址。
他們會給你發送一個驗證碼,你能夠把它輸入到文本框中來驗證你的域名。
生成證書
如今 StartSSL知道你是誰了,知道了你的域名,你能夠用你的私人密鑰來生成證書了。
這時StartSSL能爲你生成一個私人密鑰— 在他們常見問題中(FAQ)像你保證他們只生成高質量的隨機密鑰,而且之後不會做爲其餘的密鑰 — 你也能夠本身建立一個,很簡單。
這將會引導你經過命令行建立via。當你選擇 StartSSL的引導,你能夠按引導步奏進行備份,在你爲域名申請證書的地方。
打開終端,建立一個新的 2048-bit RSA 密鑰
1
|
openssl genrsa -aes256 -out my-private-encrypted.key 2048
|
會讓你輸入一個密碼. 選擇一個,並記住它 .這會產生一個加密的私鑰 ,若是你須要經過網絡轉移你的密鑰,就能夠用這個加密的版本..
下一步是將其解碼, 從而經過它生成一個「證書籤發請求」. 使用以下命令來解碼你的私鑰:
1
|
openssl rsa -
in
my-private-encrypted.key -out my-private-decrypted.key
|
而後, 生成一個證書籤發請求:
1
|
openssl req -new -key my-private-decrypted.key -out mydomain.com.csr
|
回到 StartSSL 的控制面板並單擊 「Certificates Wizard」 標籤, 而後在下拉列表裏選擇 「Web Server SSL/TLS Certificate」.
因爲咱們已經生成了本身的私鑰, 因此你能夠在此單擊 「Skip」.
而後, 在文本框內粘貼入咱們以前生成的 .csr 文件裏面的內容.
若是一切正常的話, 它就會提示你說已經收到了你發出的證書籤發請求.
如今, 選擇你以前已經驗證過的計劃使用證書的域名.
它會要求你添加一個子域, 我給本身的添加的是 「www」.
它會要求你進行確認, 若是看上去沒錯的話, 單擊 「Continue」.
注意: 在你等待經過郵件得到許可的那兒, 你有可能會遇到一個 "須要額外的驗證!" 的步驟, 第一次的時候我沒有遇到, 可是第二次的時候遇到了, 而後個人許可在大概30分鐘左右被批准, 一旦通過許可, 你須要去單擊 "Tool Box" 標籤頁並經過 "Retrieve Certificate" 來獲取你的證書.
而後應該會是這樣 — 你的證書將出如今一個文本域裏面供你去複製並粘貼到一個文件裏去, 給這個文件隨便起個你想叫的名字就行, 可是在本指南接下來的部分裏將以 mydomain.com.crt 這個名字去引用它(譯者注, 原文爲 asmydomain.com.crt, 參照下文 mydomain.com.crt 名稱來看, 應爲as後未加空格致使的拼寫錯誤).
在nginx中安裝證書
首先, 確認443端口在你的web服務器中已經打開。許多web託管已經默認爲你打開了該端口。若是你使用Amazon AWS,你須要確在你的實例安全組中443端口是開放的。
下一步,咱們將要建立web服務器要使用的「證書鏈」。它包含你的證書和StartSSL中介證書(將StartSSL的跟證書包含進來不是必要的,由於瀏覽器已經包含了該證書)StartSSL下載中介證書:
1
|
wget http:
//www
.startssl.com
/certs/sub
.class1.server.ca.pem
|
而後將你的證書和他們的證書鏈接起來:
1
|
cat
mydomain.com.crt sub.class1.server.ca.pem > unified.crt
|
最後,告訴你的Web服務器你的統一證書和你的解密密鑰。 我使用nginx——下面是你須要的nginx的最要配置。它使用301永久重定向將全部的HTTP請求從定向爲HTTPS 請求,而後指引服務器使用證書要密鑰。
你能夠得到一個 更全面的nigix配置 ,他打開了 SPDY, HSTS, SSL session resumption, 和 Perfect Forward Secrecy.
Qualys' SSL 實驗室提供了完美的 SSL 測試工具, 你能夠經過它看到你正在作的事情.
如今, 檢驗你對nginx的配置是正確的 (這也檢驗密鑰和證書工做正常):
1
|
sudo
nginx -t
|
而後啓動 nginx:
1
|
sudo
service nginx restart
|
稍等片刻,在你的瀏覽器中測試。若是進展順利,會在你的瀏覽器中出現
混合內容警告
若是你的網站在https協議中運行,你要確保全部連接資源 — 圖片,樣式表CSS, JavaScript等,都是HTTPS協議連接.若是你不這樣作,用戶的瀏覽器將沒法正常訪問。比較新的火狐瀏覽器,將確保不安全的內容出如今一個安全頁面。
幸運的是幾乎每個主要服務代碼都會嵌入一個https版本,大多數狀況下它會自動處理(包括 Google Analytics and Typekit). 你應該爲其餘人考慮一些個別的狀況。
備份您的密鑰和證書
不要忘記備份您的 SSL 證書,和它的加密私鑰。我把它們放在一個私有的 git 庫裏面,並放一個說明文本文件來描述每一個文件以及建立該文件的程序或者命令。
您應當也備份您的認證證書,您用這些證書在 StartSSL 上登陸。StartSSL 的 FAQ 頁面 已經說明 — 它是您從本身的瀏覽器中導出的一個包含了證書和密鑰的 .p12 文件。