首先是到https://certbot.eff.org/上申請證書,由於我們使用的web服務器是基於erlang的cowboy的,在主頁上沒有選項可以支持,因此在Software下拉項中選擇"None of the Above",操作系統用的是ubuntu16.04,因此在System下拉項中選擇"Ubuntu 16.04(Xenial)"。
按照其操作安裝certbot結束后輸入命令:
sudo certbot certonly --standalone -d xyz.com -d www.xyz.com
上述命令的standalone選項表示使用certbot內置的webserver(需要關閉在80端口上運行的webserver,如果有的話)為域名xyz.com, www.xyz.com生成證書;certonly表示不做任何自動安裝的操作。接着進入一系列的交互,最終在提示的目錄下生成:
cert.pem: 服務端證書
chain.pem: 瀏覽器需要的所有證書但不包括服務端證書,比如根證書和中間證書
fullchain.pem: 包括了cert.pem和chain.pem的內容
privkey.pem: 證書的私鑰
我們游戲上Facebook后出現Android機器連接失敗的問題,使用SSL證書檢測網站檢查了下,中間證書缺失。重新生成證書后,在cowboy中啟動SSL時需要注意按以下項配置:
[{cacertfile, "path/fullchain.pem"},
{certfile, "path/cert.pem"},
{keyfile, "path/privkey.pem"}]
此時再檢測時成功通過,Android也正常連接,問題解決。
