用阿里雲的免費 SSL 證書讓網站從 HTTP 換成 HTTPS

HTTP 協議是不加密傳輸數據的,也就是用戶跟你的網站之間傳遞數據有可能在途中被截獲,破解傳遞的真實內容,所以使用不加密的 HTTP 的網站是不太安全的。所以, Google 的 Chrome 瀏覽器將在 2017 年 1 月開始,標記使用不加密的 HTTP 協議的網站爲 Not Secure,不安全。

現在你要做的就是讓網站支持 HTTPS,並不難,而且現在可以免費做到。要使用 HTTPS,你需要安全機構頒發的安全證書,然後配置服務器,去使用這個證書。下面介紹一下在阿里雲免費申請安全證書,還有配置一般的 NGINX 服務器支持 HTTPS 的方法。

申請證書

  1. 登錄:阿里雲控制檯,產品與服務,證書服務,購買證書。
  2. 購買:證書類型選擇 免費型DV SSL,然後完成購買。
  3. 補全:在 我的證書 控制檯,找到購買的證書,在操作欄裏選擇 補全。填寫證書相關信息。
  4. 域名驗證:可以選擇 DNS,如果域名用了阿里雲的 DNS 服務,再勾選一下 證書綁定的域名在 阿里雲的雲解析。
  5. 上傳:系統生成 CSR,點一下 創建。
  6. 提交審覈。

如果一切正常,10 分鐘左右,申請的證書就會審覈通過。

2018-01-04:您也可以使用 Let's Encrypt 簽發的證書。

申請證書要注意的是驗證域名,就是你要驗證你想綁定證書的域名是你自己的,如果選擇使用 DNS 驗證,你需要在域名的管理裏,添加一條特定的 DNS 記錄,這樣就可以證名這個域名是你自己的。使用了阿里雲的雲解析服務,這個步驟可以自動完成,會自動爲你添加一條 DNS 驗證的記錄。

輸入證書要綁定的域名:

填寫個人信息:

在域名的管理裏,因爲我用了阿里雲的 DNS 解析服務,所以會自動添加一條 CNAME 記錄,這條記錄就是驗證域名所有權用的:

下載證書

在阿里雲的證書管理那裏,如果申請的證書審覈通過,你就可以下載了,點擊 下載,可以選擇不同的類型,可以選擇 NGINX,或 Apache 之類的服務器。根據自己網站的 Web 服務器類型,下載對應的證書。解壓以後,你會得到兩個文件一個是 *.key,一個是 *.pem。

配置 NGINX 的 HTTPS

有了證書,就可以去配置 Web 服務器去使用這個證書了,不同的 Web 服務器地配置方法都不太一樣。下面用 NGINX 服務器作爲演示。我的域名是 ninghao.org,出現這個文字的地方你可以根據自己的實際情況去替換一下。

下載並上傳證書

創建一個存儲證書的目錄:

sudo mkdir -p /etc/nginx/ssl/ninghao.org

把申請並下載下來的證書,上傳到上面創建的目錄的下面。我的證書的實際位置是:

/etc/nginx/ssl/ninghao.org/213985317020706.pem
/etc/nginx/ssl/ninghao.org/213985317020706.key

NGINX 配置文件

你的網站可以同時支持 HTTP 與 HTTPS,HTTP 默認的端口號是 80,HTTPS 的默認端口號是 443。也就是如果你的網站要使用 HTTPS,你需要配置網站服務器,讓它監聽 443 端口,就是用戶使用 HTTPS 發出的請求。

下面是一個基本的監聽 443 端口,使用了 SSL 證書的 NGINX 配置文件,創建一個配置文件:

touch /etc/nginx/ssl.ninghao.org.conf

把下面的代碼粘貼進去:

server {
  listen       443;
  server_name  ninghao.org;
  ssl          on;
  root /mnt/www/ninghao.org;
  index index.html; 

  ssl_certificate   /etc/nginx/ssl/ninghao.org/213985317020706.pem;
  ssl_certificate_key  /etc/nginx/ssl/ninghao.org/213985317020706.key;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
  ssl_prefer_server_ciphers on;
}

上面的配置裏,ssl_certificate 與 ssl_certificate_key 這兩個指令指定使用了兩個文件,就是你下載的證書,解壓之後看到的那兩個文件,一個是 *.pem,一個是 *.key。你要把這兩個文件上傳到服務器上的某個目錄的下面。

重新加載 NGINX 服務:

sudo service nginx reload

或:

sudo systemctl reload nginx

驗證配置

在瀏覽器上輸入帶 https 的網站地址:https://ninghao.org

*可能會遇到需要身份驗證  ps:svn的服務端口和https的443端口衝突了,修改svn服務的端口即可。

如果正確的配置了讓服務器使用 SSL 證書,會在地址欄上顯示一個綠色的小鎖頭圖標。

點開那個小鎖頭,會顯示安全連接,再打開 詳細信息。

提示:

This page is secure (valid HTTPS).

打開 View certificate,會顯示證書的相關信息。

搜索引擎優化

2015 年 5 月 25 日,百度發公告聲明已全面支持 HTTPS 網頁的收錄,使用 HTTPS 的網頁被認爲更安全,所以在排名上會被優先。 百度還推薦使用 301 重定向,把網站的 HTTP 重定向到 HTTPS 。

前幾天我讓寧皓網支持 HTTPS,並觀察了搜索量,並未受到影響。所以,至少不用擔心換成 HTTPS 以後,搜索量會下降。不過百度的反應一般都比較慢,需要給他更長的時間。換成 HTTPS 的後兩天,谷歌已經收錄了 HTTPS 版本的首頁,但是百度至今還沒有反應。不管怎麼樣,使用 HTTPS 都是遲早要做的事情。

NGINX 配置使用 301 重定向:

server {
  listen        80;
  server_name   ninghao.org;
  return 301    https://$host$request_uri;
}

上面的配置會讓對 HTTP 網頁的請求,重定向到 HTTPS 版本的網頁上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章