我想為託管在不使用 Bitnami 堆疊的 Amazon Lightsail 執行個體中的網站安裝標準的 SSL 憑證。
解決方法
**注意事項:**在您不使用 Bitnami 堆疊的 Lightsail 執行個體中安裝標準的 Let's Encrypt SSL 憑證之前,請安裝 Certbot 套件。
網域必須直接指向 Lightsail 執行個體、透過負載平衡器或透過發行版。若要完成憑證驗證,網站 URL 不得從 Web 瀏覽器中的負載平衡器或發行版傳回錯誤。
若要安裝標準的 Let's Encrypt SSL 憑證,請完成下列步驟:
-
若要停止在執行個體中所執行的 Web 服務,請執行 Linux 發行版的命令:
Apache,例如 Amazon Linux2 或 CentOS
sudo service httpd stop
Apache,例如 Ubuntu 或 Debian
sudo service apache2 stop
NGINX
sudo service nginx stop
-
執行下列命令以安裝 SSL 憑證:
sudo certbot certonly --standalone -d example.com -d www.example.com
注意事項:將 www.example.com 取代為網域名稱。
Certbot 產生 SSL 憑證之後,您會收到已順利收到憑證的訊息。同時會提供憑證和金鑰檔案位置。將這些檔案位置複製到文字檔案以用於步驟 5。
-
若要啟動 Web 服務,請執行 Linux 發行版的命令:
Apache,例如 Amazon Linux 2 或 CentOS
sudo service httpd start
Apache,例如 Ubuntu 或 Debian
sudo service apache2 start
NGINX
sudo service nginx start
-
設定自動憑證續約。
如果您使用 snapd 來安裝 Certbot 套件,則會在 systemd 計時器或 cronjob 中自動設定續約。但是,您必須在執行 Certbot 命令之前停止 Web 服務。若要停止 Web 服務,然後再次啟動該服務,您必須自動化停止和啟動程序。若要設定自動化,請執行下列命令:
sudo sh -c 'printf "#!/bin/sh\n service apache2 stop \n" > /etc/letsencrypt/renewal-hooks/pre/webservice.sh'
sudo sh -c 'printf "#!/bin/sh\n service apache2 start \n" > /etc/letsencrypt/renewal-hooks/post/webservice.sh'
sudo chmod 755 /etc/letsencrypt/renewal-hooks/*/webservice.sh
**注意事項:**將 service apache2 取代為 Web 服務,以及 Web 服務特定的啟動和停止命令。
如果 Linux 發行版是 Amazon Linux 2 或 FreeBSD,則您無法使用 snapd 來安裝 Certbot 套件。若要手動設定續約,請執行下列命令:
echo "30 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew --pre-hook 'service apache2 stop' --post-hook 'service apache2 start'" | sudo tee -a /etc/crontab > /dev/null
**注意事項:**將 service apache2 取代為 Web 服務,以及 Web 服務特定的停止和啟動命令。
-
將 Web 伺服器設定為使用標準的 Let's Encrypt SSL 憑證,並設定 HTTPS 重新導向。
**注意事項:**組態取決於執行個體中擁有的 Web 伺服器設定。若要設定您的 Web 伺服器,請參閱 Web 服務的官方文件。
相關資訊
如何在 Lightsail 上託管的 Bitnami 堆疊中安裝 Let's Encrypt SSL 憑證?
如何在 Lightsail 上託管的 Bitnami 堆疊中安裝萬用字元 Let's Encrypt SSL 憑證?
如何在 Amazon Lightsail 中安裝萬用字元 Let's Encrypt SSL 憑證?