Self-Signed Certificate
多虧了 Chrome 的推波助瀾,https 終於成為顯學了,不過並不是所有網站都需要高加密等級的憑證,這時 Self-Signed Certificate 就派得上用場了 (可以少花一點錢)
隨便找的網站,一般 DV 會更便宜。DV, OV 及 EV 的差別請看 https://www.ssl.com/article/dv-ov-and-ev-certificates/
WARNING: 千萬不要用 Self-Signed Certificate 類型的憑證在有高度資安需求的網站,不然駭客會很高興
如果是個人用或測試用途的網站,有幾個工具可以幫助你建立 https 的網站,例如 www.sslforfree.com
按下 Create Free SSL Certificate 後,會出現以下畫面,需要選擇驗證方式,此處介紹 Manual Verification
選擇驗證方式接下來按照網頁上的介紹,一步步在 server 上設定
按步驟設定 web server
下載 Download File #1 及 #2
在 web root 生成 WEB ROOT/.well-known
在 .well-known 下生成 acme-challenge 資料夾
上傳步驟 1. 的兩個檔案到 WEB ROOT/.well-known/acme-challenge
點那兩個網址確認設定正確 (Browser 應該會直接下載)
如果上面那兩個檔案沒有出現的話,檢查一下 web server 的設定是否正確
如果一切都沒問題,按下 Download SSL Certificate (下面的 I Have My Own CSR 不用按)
稍等一下會出現以下畫面
憑證內容
接下來會出現上圖的內容,由上而下,分別把內容複製到 privacy.crt, private.key 及 ca_bundle.crt 中,然後上傳到 Web Server 並設定,如果你是使用 Nginx 的話,請參考下例
server {
listen 443 ssl;
server_name example.com;
ssl_certificate privacy.crt;
ssl_certificate_key privacy.key;
ssl_client_certificate ca_bundle.crt;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
}
source: http://nginx.org/en/docs/http/configuring_https_servers.html
還需將 http 的流量移至 https
server {
listen 80;
server_name www.example.com;
return 301 https://$server_name$request_uri;
}
source: https://www.nginx.com/blog/creating-nginx-rewrite-rules/
最後重啟就大功告成了