您在這裡

使用Cloudflare的源服務器證書

James Qi 在 2022年8月30日 - 16:46 發表

前一篇博文剛剛寫了《購買Cloudflare的高級SSL證書管理器》,其中說到這種高級證書隻能在Cloudflare中綁定使用,無法下載放在源服務器使用。

如果要讓CDN使用“完全并嚴格的SSL加密模式”,端到端加密,服務器上就需要有受信任的 CA 證書或 Cloudflare Origin CA 證書。我們以前源站采用的是前者,也就是受信任的CA證書,一直使用Let's Encrypt在服務器上生成的免費域名證書。

因為我們購買雲服務器的時間比較早,當時采用CentOS 6.x現在已經過時了,上面安裝的certbot也是很老的版本無法升級,不能生成通配符域名證書,所以使用起來也不太方便。這種老版本certbot一般是采用http文件認證,前些天我們采用Cloudflare的批量重定向功能降低源服務器負載後,會讓一些子域名下所有路徑全部都跳轉到其它地方,造成文件認證需要的.well-known目錄下文件無法訪問,因此造成源站SSL證書過期無法更新。

不過,可以采用Cloudflare提供的源證書服務,生成由 Cloudflare 簽名的免費 TLS 證書,以安裝在源服務器上。源證書僅對 Cloudflare 與源服務器之間的加密有效。截圖如下:

Cloudflare的源服務器SSL證書

相關介紹:

可以免費創建多個證書,每個證書可以包含多條域名,支持多級通配符域名。

創建過程很簡單,我就不截圖了,注意生成證書後,可以馬上把私鑰複制并妥善保存(例如命名為:jamesqi.com.key),後面這個私鑰就無法在網站上獲取了,隻能下載源證書(例如命名為:jamesqi.com.cert)。

把私鑰和證書文件上傳到源服務器上,修改Apache的httpd-ssl.conf文件中的配置,例如:

<VirtualHost *:443>
  DocumentRoot "/www-path/jamesqi.com"
  ServerName jamesqi.com
  ServerAlias a.jamesqi.com
  ServerAlias b.c.jamesqi.com
  ServerAdmin webmaster@jamesqi.com
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
  SSLCertificateFile "/cloudflare-origin-ca-certificates/jamesqi.com.cert"
  SSLCertificateKeyFile "/cloudflare-origin-ca-certificates/jamesqi.com.key"
  <FilesMatch "\.(cgi|shtml|phtml|php)$">
      SSLOptions +StdEnvVars
  </FilesMatch>
  <Directory "/www-path/jamesqi.com">
     SSLOptions +StdEnvVars
     AllowOverride All
   </Directory>
</VirtualHost>

這樣重啟Apache後,這個源站證書就可以起作用了,用戶訪問CDN的通用SSL證書,不用管CDN到源站之間的證書。

百度雲加速以前是與Cloudflare合作關系,采用了Cloudflare的一些技術,我嘗試了一下,Cloudflare生成下載的源服務器證書放置在百度雲加速代理的站點上,同樣是可以設置SSL加密模式為“完全(嚴格)”。

但如果把源站證書當作通用SSL證書來直接訪問不通過CDN代理的站點,浏覽器中就會出現證書錯誤的提示,如下圖:

Cloudflare源站證書不能公開訪問

當然,這個證書本來也不是為通用SSL證書設計的。

生成證書的時候可以選擇最長15年有效期,放到服務器上基本上就可以忘記還需要證書這回事了。👌

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。