之前介紹過 Let's Encrypt 免費 SSL ,日前已經開放公開測試,任何人都可申請 SSL 憑證了,有了免費 SSL 才是 HTTP2 協定推廣的最大助力,因為目前瀏覽器僅支援 HTTP2 在加密的環境,我大概講一下 Lets Encrypt 的優點。
- 不需要自己產生 key,不用線上申請,只需要在 Server 上有辦法跑起 letsencrypt 的程式就可以自動取得憑證
- 可以自我更新憑證,不用怕過期問題
雖然仍有其他的免費 SSL ,如 COMODO ,但設定方式就複雜,要產生 key 去網頁申請,過期了又要再來一次,就是不好管理。
除了依照官方手冊第一次申請憑證玩比較久,現在 EPEL Repo 已經有包進 letsencrypt 可直接用 yum,第一次玩有可能會碰到執行取得憑證時發生 Connection 問題之外,其他的部分都還好,自動更新憑證方式也很簡單,我筆記下來
以下是我以 CentOS 7 為例子,將以下 Code 寫在 cron 中,可以定時執行,我是設定一個月自動重新取得憑證一次,並且 reload httpd 就行了(這是 for Apache)
letsencrypt certonly --webroot -w /網站路徑 --renew-by-default -d 網域名稱 systemctl reload httpd
這種更新方式會於網站路徑產生一個名為 ".well-known" 的文件夾,猜測應該就是讓 letsencrypt 驗證用的,因此網站路徑必須要指定正確能夠從外面可以讀取到。
要注意,有時候我們為了加強源碼安全性,可能會限制 .* 的存取,如 .git .svn 等,我就遇過因為防止了 .* 也就是只要有點(.) 開頭的都拒絕,這會讓更新失敗,所以 Web Server 要開通 .well-known 可以讓外部存取,才有辦法以上述方式更新。
由於 Apache Web Server 要 2.4.17 才支援,而且目前 CentOS 沒人包 RPM,後來我改用官方包的 nginx 1.9.9 (1.9.5 之後支援 HTTP2) ,目前本站已經支援 http2 協定
網站加密評等 A+ , hr rh
由於 CentOS 的 openssl 套件尚未升級至 1.0.2 版本,因此不支援 ALPN,所以我的環境 CentOS+nginx 的 HTTP2 走的是 NPN 的協定,看起來只有 Chrome 和 FireFox 能夠成功走 HTTP2,IE11 或 EDGE 只能走 HTTP/1.1。