Sometimes you win, sometimes you lose, sometimes it rains.

Self-Signed Certificate

多虧了 Chrome 的推波助瀾,https 終於成為顯學了,不過並不是所有網站都需要高加密等級的憑證,這時 Self-Signed Certificate 就派得上用場了 (可以少花一點錢)

隨便找的網站,一般 DV 會更便宜。DV, OV 及  EV 的差別請看 https://www.ssl.com/article/dv-ov-and-ev-certificates/隨便找的網站,一般 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按步驟設定 web server

  1. 下載 Download File #1 及 #2

  2. 在 web root 生成 WEB ROOT/.well-known

  3. 在 .well-known 下生成 acme-challenge 資料夾

  4. 上傳步驟 1. 的兩個檔案到 WEB ROOT/.well-known/acme-challenge

  5. 點那兩個網址確認設定正確 (Browser 應該會直接下載)

  6. 如果上面那兩個檔案沒有出現的話,檢查一下 web server 的設定是否正確

  7. 如果一切都沒問題,按下 Download SSL Certificate (下面的 I Have My Own CSR 不用按)

稍等一下會出現以下畫面

憑證內容憑證內容

接下來會出現上圖的內容,由上而下,分別把內容複製到 privacy.crt, private.keyca_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/

最後重啟就大功告成了

  • Website
  • SSL
  • Nginx