EC2 Ubuntu 安裝 Let's Encrypt
假設
- 以下操作先做假設
- Elastic IPs:
123.456.789 - 下載的 .pem 檔案名稱:
test.pem test.pem位置:/User/oa/test.pem- 網址(domain):
your.url.tw - E-Mail:
your.email@gmail.com - 以下編輯器主要是使用
nano,請自行斟酌是否使用vi或vim
- Elastic IPs:
記得去你的 DNS(Domain Name Server) 設定,新增
A紀錄your.url.tw,指向 IP123.456.789
Let's Encrypt(ssl)
- 安裝 curl,指令
sudo apt install curl - 進入 www 目錄,指令
cd ~/www - 從 Git 下載最新 dehydrated,指令
git clone https://github.com/lukas2511/dehydrated.git - 進入專案,指令
cd dehydrated - 新增目錄,指令
sudo mkdir /etc/dehydrated/ - 修改權限,指令
sudo chmod 777 /etc/dehydrated/ - 將檔案移進去,指令
cp dehydrated /etc/dehydrated/ - 修改 dehydrated 權限
chmod a+x /etc/dehydrated/dehydrated - 建立證驗時所需目錄,指令
mkdir -p /var/www/dehydrated/ - 第一次執行同意 Let's Encrypt 的條款,指令
/etc/dehydrated/dehydrated --register --accept-terms
新增 SSL by Let's Encrypt
-
Apache,在該專案下的
httpvhost 內,加入指令Alias /.well-known/acme-challenge/ /var/www/dehydrated/ -
nginx,在該專案下的
httpvhost 中的 server 內加入以下指令:location /.well-known/acme-challenge/ { alias /var/www/dehydrated/; } -
重新載入 Apache 設定,指令:
sudo systemctl reload apache2 -
取得憑證
/etc/dehydrated/dehydrated -c -d your.url.tw
啟用 Apache SSL 功能
第一次使用
-
啟用,輸入指令:
sudo a2enmod ssl -
複製一份 ssl vhost 檔案指令
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/my-ssl.conf -
啟用
my-ssl.conf,指令:sudo a2ensite my-ssl.conf -
重新載入 Apache 設定,指令:
sudo systemctl reload apache2
不是第一次
- 編輯
my-ssl.conf,指令:sudo nano /etc/apache2/sites-available/my-ssl.conf,可以用以下當範例:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
# 你的 Domain
ServerName your.url.tw
ServerAlias your.url.tw
# 你的 E-Mail
ServerAdmin your.email@gmail.com
# 你的專案目錄
DocumentRoot /var/www
# Log 的儲存位置
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
## SSL 設定
SSLEngine on
SSLCertificateFile /etc/dehydrated/certs/your.url.tw/cert.pem
SSLCertificateKeyFile /etc/dehydrated/certs/your.url.tw/privkey.pem
SSLCertificateChainFile /etc/dehydrated/certs/your.url.tw/chain.pem
# 記得也要是你的專案目錄
<Directory /var/www>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
</IfModule>
- 重啟 Apache 即可,指令:
sudo service apache2 restart
重啟錯誤
-
若出現以下錯誤,代表你還沒申請 ssl 的憑證檔案,所以出錯。
Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details. -
所以,先把
my-ssl.conf停用再重開 Apache,指令:sudo a2dissite my-ssl.conf -
重新載入 Apache 設定,指令:
sudo systemctl reload apache2 -
重啟 Apache 即可,指令:
sudo service apache2 restart -
然後 執行上述的
新增 SSL by Let's Encrypt




