---
# System prepended metadata

title: 申請SSL

---

# 申請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紀錄就可以刪除了

