在伺服器上啟用HTTPS的詳細教程_nginx

來源:互聯網
上載者:User

 現在,你應該能在訪問https://konklone.com的時候,在地址欄裡看到一個漂亮的小綠鎖了,因為我把這個網站換成了HTTPS協議。一分錢沒花就搞定了。

為什麼要使用HTTPS協議:

  •     雖然SSL並不是無懈可擊的,但是我們應該儘可能提高竊聽成本
  •     加密通訊不應心存僥倖,所有串連都應被加密
  •     福利: 使用了HTTPS之後,如果網站的訪客是從其他已經使用了HTTPS的網站上跳轉過來,你就能在Google Analytics中擷取更完整的來源資訊(比如Hacker News)。

本文將為您說明,如何通過開啟您網站上的HTTPS協議來為構建和諧、安全的互連網添磚加瓦。儘管步驟有些多,但是每個步驟都很簡單,聰明的你應該能在1個小時之內搞定這個事情。


概要: 目前想在 web 上使用 HTTPS 的話, 你需要獲得一個認證檔案, 該認證由一個受瀏覽器信任的公司所簽署. 一旦你獲得了它, 你就在你的 網頁伺服器上指定其所在的位置, 以及與你關聯的私密金鑰的位置, 並開啟 443 連接埠準備使用. 你不需要是一個專業級軟體開發人員來做這個, 但是你需要 熟練使用命令列操作, 並能熟練的配置 你操控的伺服器.

大部分的認證都是要錢的, 但是我聽從了 Micah Lee 的 建議 後用了 StartSSL. 那也是 EFF 正在使用的, 而且 他們針對個人的基礎型認證是免費的. (他們會要求你去支付一個更進階的認證如果你的網站實際上是商業網站的話.) 值得注意的是他們的網站在一開始使用的時候很難用 — 尤其是如果你對於潛藏在 SSL 幕後的概念和術語還很陌生的話(就像我一樣). 幸運的是, 其實並不像想象中的那麼難, 只是會有很多細微的步驟而已.

下面, 我們將一步步的從註冊開始直到建立屬於你的認證. 我們也會覆蓋在 nginx 環境下的安裝知識, 但是你可以在任何你希望使用的 網頁伺服器上使用該認證.

他們會通過email發給你個驗證碼。在這期間不要關閉選項卡或瀏覽器 , 所以你只要保持開啟狀態,知道獲得驗證碼並貼上它。

 等待幾分鐘就能獲得整數了。一旦通過申請,他們會發送一封帶有特殊串連和驗證碼的email給你

完成之後會給你一個私人密鑰,在他們的伺服器上產生的私人密鑰,但這不是你建立SSL 憑證的密鑰.他們用這個私人密鑰產生一個單獨的"認證認證",以後你可以用它來登入StartSSL的控制台,下面你將要為你的網站建立一個整數了。

最後他們會叫你安裝認證

在你的瀏覽器上安裝驗證認證

要是你用的的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 密鑰

openssl genrsa -aes256 -out my-private-encrypted.key 2048

會讓你輸入一個密碼. 選擇一個,並記住它 .這會產生一個加密的私密金鑰 ,如果你需要通過網路轉移你的密鑰,就可以用這個加密的版本..


下一步是將其解碼, 從而通過它產生一個“認證簽發請求”. 使用如下命令來解碼你的私密金鑰:

openssl rsa -in my-private-encrypted.key -out my-private-decrypted.key

然後, 產生一個認證簽發請求:

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下載中介認證:

wget http://www.startssl.com/certs/sub.class1.server.ca.pem

然後將你的認證和他們的認證串連起來:

cat mydomain.com.crt sub.class1.server.ca.pem > unified.crt

最後,告訴你的Web伺服器你的統一認證和你的解密密鑰。 我使用nginx——下面是你需要的nginx的最要配置。它使用301永久重新導向將所有的HTTP請求從定向為HTTPS 請求,然後指引伺服器使用認證要密鑰。 
 

複製代碼 代碼如下:

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

你可以獲得一個 更全面的nigix配置 ,他開啟了   SPDY, HSTS, SSL session resumption, 和  Perfect Forward Secrecy.

Qualys' SSL 實驗室提供了完美的 SSL 測試載入器, 你可以通過它看到你正在做的事情.

現在, 檢驗你對nginx的配置是正確的 (這也檢驗密鑰和認證工作正常):

sudo nginx -t

然後啟動 nginx:

sudo service nginx restart

稍等片刻,在你的瀏覽器中測試。如果進展順利,會在你的瀏覽器中出現

混合內容警告

如果你的網站在https協議中運行,你要確保所有連結資源 — 圖片,樣式表CSS, JavaScript等,都是HTTPS協議連結.如果你不這樣做,使用者的瀏覽器將無法正常訪問。比較新的Firefox瀏覽器,將確保不安全的內容出現在一個安全頁面。

幸運的是幾乎每一個主要服務代碼都會嵌入一個https版本,大多數情況下它會自動處理(包括 Google Analytics and Typekit). 你應該為其他人考慮一些個別的情況。

備份您的密鑰和認證

不要忘記備份您的 SSL 憑證,和它的加密私密金鑰。我把它們放在一個私人的 git 庫裡面,並放一個說明文字檔來描述每個檔案以及建立該檔案的程式或者命令。

您應當也備份您的認證認證,您用這些認證在 StartSSL 上登入。StartSSL 的 FAQ 頁面 已經說明 — 它是您從自己的瀏覽器中匯出的一個包含了認證和密鑰的 .p12 檔案。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.