改用 StartSSL 的 Class 1 免費憑證

pupudog_ssl_by_startssl

之前提過把手上的 blog 改用 CloudFlare 提供的免費 SSL 憑證,但不可避免的一定要透過 CloudFlare 在國外的 CDN 來連線,以 pupudog 這種存在大量圖片的 blog 來說,寫作時上傳圖片的速度跟擺在家裡的機器比實在差太多,以前的解決方案是,平時透過 CDN 來分流,等要寫文章、上傳圖片時,再切回自己家裡,但如果全面使用 SSL 連線的話,切回來的那段時間就會有 ERR_CERT_AUTHORITY_INVALID 的錯誤,解法還是得靠一個比較正經的 SSL 憑證才行。目前免費的 SSL 憑證中最有名的大概是 StartSSL(本來想等 Lets’s Encrypt 的,不過一直沒下文啊),另一家最近看起來也很紅的 WoSign 因為是中國的公司,就謝謝再指教了。

申請憑證的 step-by-step 教學網路上已經有一堆了,就不細說,以下只列出我遇到的一些問題。

不能使用 Gmail 帳戶註冊申請?(未査證)

一開始申請時用的是 gmail 的帳號,但卻收到不通過的回信

Unfortunately we could not validate the personal information you provided during the registration process.

後來改用自己 domain 的 email 就 OK 了。明明兩次填的資料都是一樣的,只好怪罪到 Gmail 頭上了。=.=

要先取得 Decrypt Private Key 才能匯入 Synology DSM

ssl_crt_mismatch

拿到 ssl.key 和 ssl.crt 後,直接匯入 Synology DSM 的憑證中心會發生「憑證與私鑰不合」的錯誤,這時要到 StartSSL 的 Tool Box 去執行 Decrypt Private Key 的動作(可能是 DSM 沒有機制讓管理員輸入 keypress 的關係吧)。

get_decrypt_key

需額外匯入 intermediate CA certificate

一開始我只 import 了 decrypt_ssl.key 和 ssl.crt 兩個,用電腦的瀏覽器看好像也沒什麼問題,但一天忽然發現在 Android 上的瀏覽器,會出現「不信任的 CA」的錯誤,這個情況有點糟啊!從 google analytics 來看,大概有 30% 的瀏覽是從 Android 來的,不少耶!

StartSSL 有一個 SSL Checker 工具可以檢查是不是有設定錯誤的情形,從檢查的結果來看,發現原來 StartSSL class 1 certificate 是沒有內建在 android 裡的,要額外增加 intermediate CA certificate 才行 (StartSSL FAQ#31)。

ssl_checker_error

這時要先去下載 sub.class1.server.ca.pem,然後在 Synology DSM 的「中繼憑證」處匯入。

import_key_crt_im

這時再回去 SSL Checker 裡看就沒問題啦!用 Android 的瀏覽器也不再出現錯誤了。不過 StartSSL 每年都要重新 renew 一次,稍稍麻煩一些啦!

ssl_checker_ok