当我们拥有了自己的域名时, 应当配置SSL/TLS证书实现HTTPS加密访问
我们为什么需要HTTPS ?
在HTTP访问时, 所有的流量请求都是以明文方式送出的, 如果有人在传输途中抓包, 你所有的传输数据都将会被泄露给窃听者;HTTPS是一种通过计算机网络进行安全通信的传输协议, 其经由HTTP进行通信,但利用SSL/TLS来加密数据包.
需要哪些步骤来实现HTTPS加密访问?
為了在你的網站上設定 HTTPS,你需要從憑證頒發機構 (Certificate Authority, CA) 獲取憑證. 在这里我们选择从Let’s Encrypt申请免费的SSL/TLS证书, Let’s Encrypt 是一個免費、自動化、開放,為了公眾利益而運作的憑證頒發機構 (Certificate Authority, CA)。它是由 Internet Security Research Group (ISRG) 所提供的服務。
本案例中我們選擇Raspberry Pi 4 Model B Rev 1.4在Ubuntu 20.04.3 LTS aarch64下進行
安装snapd
snap install core; sudo snap refresh core
安装Certbot
snap install --classic certbot
完成后使用Certbot的手动模式向Let's Encrypt 申请证书
certbot certonly --manual --preferred-challenges=dns-01
--preferred-challenges 选项以指定域名认证方式, http-01是文件认证, dns-01是DNS解析指定TXT认证,这里用的DNS认证
執行完命令后, 在交互模式下首先需要提交相关信息, 輸入邮箱后回車
接下來你需要接受服務條款, 輸入Y並回車繼續
再然后是一些新闻之类的邮件推送,可以不接受
输入你需要申請的域名, 如果你想用通配符包含所有的域名需要注意, 通配符不包含主域名, 所以申請需要填兩個, 多個之間以逗號分隔
接下来会给出需要做DNS TXT记录验证的信息來通过DNS认证域所有权
在你的DNS記錄中添加給出的TXT記錄, 例如:
DNS生效可能需要幾秒鐘到幾分鐘不等, 我們可以使用官方推薦的Google Admin Toolbox來驗證DNS是否生效, 我們可以直接訪問命令窗口上給出的鏈接, 也可也手動訪問 https://toolbox.googleapps.com/apps/dig/ 輸入TXT記錄名稱在下面類型選擇TXT, 當出現結果而不是顯示Record not found!時, 則表明TXT記錄已生效
在確認TXT記錄生效後, 回到終端窗口, 按下回車繼續即可成功創建證書如下圖, 這還包含以下内容: 證書的路徑位置, 密鑰的路徑位置以及到期時間
接下來將證書和密鑰複製到目標位置或者指定到目標路徑配置即可, 例如在Nginx中:
ssl_certificate 為證書的路徑
ssl_certificate_key 為證書私鑰的路徑
配置如下圖所示
保存後重載Nginx, 使用https訪問目標域名, 檢查證書可以看到已經應用成功
現在, 你已經成功配置完成證書并以HTTPS加密訪問此域名🎉
關於證書續期
申請的證書默認有效期為3個月, 快到期時Let’s Encrypt將會給你傳送郵件提醒你證書快要到期
使用下面的命令來爲證書續期:
certbot --manual --preferred-challenges dns certonly
參考文章:
少數派:手动申请 Let's Encrypt 通配符证书 https://sspai.com/post/66008