# 申請SSL 使用[certbot](https://certbot.eff.org/)進行申請SSL證書 將certbot安裝在任意一台機器上(windows, linux) 1. 安裝 - Linux Ubuntu ``` $ sudo apt update $ sudo apt install snapd $ sudo snap install core; sudo snap refresh core $ sudo snap install --classic certbot $ sudo ln -s /snap/bin/certbot /usr/bin/certbot ``` - Windows [https://dl.eff.org/certbot-beta-installer-win32.exe](https://dl.eff.org/certbot-beta-installer-win32.exe) <br> 2. 執行申請證書 - DNS > 使用條件: 我們有客戶域名的操作控制權 1. `$ certbot certonly --manual --preferred-challenges dns` 執行後輸入要申請證書的域名, 之後會產生一組隨機字串, 並且需要保持當前頁面, 驗證完成後再按下一步 <br> 2. 驗證域名擁有權 1. 到該域名的DNS管理頁面 2. 新增TXT紀錄 3. 紀錄名稱(子域名)為`_acme-challenge` 4. 值為在第2步所產生的隨機字串 5. 結果會如以下 `_acme-challenge.example.com. TXT "gfj9Xq...Rg85nM"` <br> 3. DNS生效需要一定時間, 回到指令行按下一步確認是否生效 <br> - http > 使用條件: 客戶已經將域名指向至他的主機, 並且我們可以ssh進入客戶的主機做操作 1. `$ certbot certonly --manual --preferred-challenges http` 執行後輸入要申請證書的域名, 之後會產生一組隨機字串, 並且需要保持當前頁面, 驗證完成後再按下一步 <br> 2. 在\***客戶**\*的主機, **網站根目錄**`/.well-known/acme-challenge/`下, 放置該指令返回所需要的檔案名稱和檔案內容 <br> 3. 回到指令行按下一步確認是否生效 <br> > CMS的網站預設根目錄是`/var/lib/cayin/CMS/www` <br> 3. 申請成功後證書會放在系統的特定路徑下, 會顯示在指令行所返回的訊息 > 路徑範例 `..../live/example.com/` <br> 4. 我們需要的是`..../archive/域名.com/`底下的證書檔案 - `fullchain1.pem` - `privkey1.pem` <br> > 如果後續還有幫相同的域名申請證書, 後面的編號會遞增, 根據需求選擇特定或是最新的證書檔案 <br> 5. 將證書檔案放置客戶的CMS主機上 6. 更新檔案`/etc/apache2/sites-available/CMS_SSL.conf` ``` SSLCertificateFile /etc/apache2/ssl/fullchain1.pem SSLCertificateKeyFile /etc/apache2/ssl/privkey1.pem ``` 這兩個檔案的路徑指向我們放置的SSL證書的路徑就可以 7. 啟用SSL設定檔`$ sudo a2ensite CMS_SSL` 8. 到`/etc/apache2/sites-enabled/`底下, 應該要看到以下畫面 ![](https://i.imgur.com/hkS2KOV.png) 9. 重新讀取設定檔`$ sudo systemctl reload apache2`使網站https生效 10. 申請完畢後, 為了驗證所建立的檔案或是DNS紀錄就可以刪除了