如何申請免費SSL?又要怎麼安裝SSL?(以SSL For Free – Let’s Encrypt為例)

本篇教學會以SSL For Free提供的免費SSL憑證作為範例!
我的網站好端端的,又沒有在做任何金流服務,為什麼硬是要去申請一個SSL讓網站從http變成https?
原因是Google預計從Chrome 62開始,凡事要要求填寫資料的http網站,全部都會被標上『不安全』字樣!
相關新聞:iThome: 自Chrome 62起,所有需填資料的HTTP網頁都會被標示為「不安全」
誰希望自己的網站被標上『不安全』呢?

本篇介紹的是手動申請的方法,全自動更新的方法如下列連結:
如何使用certbot自動更新SSL憑證 (CentOS 7, CentOS 6, Ubuntu)

Step 1

到SSL For Free申請帳號,方便日後管理SSL憑證到期日。
SSL For Free

Step 2

SSL For Free網站首頁紅框的位置填入你想申請SSL的Domain Name,
填好之後,右邊『Create Free SSL Certificate』的綠色按鈕給他按下去!
範例:以本站來說,就是填入『www.brilliantcode.net』就夠了!
恭喜,此時此刻的你已經完成整個申請程序的30%!
SSL-For-Free-step1

Step 3

選擇手動驗證『Manual Verification』

過一下子,網頁下方會出現一堆新的內容,大致上是手動驗證的步驟。

Step 4

在你要申請SSL的網域的根目錄建立兩層資料夾
/根目錄/.well-known/acme-challenge/

Step 5

本步驟,要下載驗證檔,並且放置在上一步驟的路徑裡面!

點選下載驗證檔案『Download File #1』
(如果填寫的網域名稱是www.aaa.aaa,會有2個檔案需要下載)

將檔案放入剛才建立的目錄裡面!
/根目錄/.well-known/acme-challenge/

要怎麼把檔案放進去?
方法一:使用擁有足夠權限的帳號,透過FTP把檔案放進去。
(如果你的站台本來就沒有架設FTP站台,不建議因此倉促架設!)

方法二:用vim把檔案建立到那個目錄裡面!再把檔案內容寫進去就好了!

存檔離開
點選連結2試試看,能不能看得到檔案內容?
看得到內容就可以進行下一步驟!
如果是『Permission Denied』則要注意一下是否有將權限開放給apache的執行帳號!

Step 6

按下『Download SSL Certificate』,SSL For Free會自動幫你驗證、並產生你的SSL憑證!
如果按下之後看到的畫面跟下圖不一樣,建議還是去查一下Apache error_log,看到底哪裡出問題了!

網頁畫面可以直接預覽3個檔案的內容。
網頁再往下捲一些,可以看到一個下載所有檔案的按鈕!『Download All SSL Certificate Files』

網頁預覽內容對應到下載的檔案、再分別對應到Apache ssl.conf設定檔參數的對照表如下:

網頁預覽內容 全部下載的檔名 Apache ssl.conf設定檔參數
CA Bundle ca_bundle.crt SSLCACertificateFile
Certificate certificate.crt SSLCertificateFile
Private Key private.key SSLCertificateKeyFile

這3個檔案也要放到伺服器裡面!
(CentOS 7 預設路徑/etc/pki/tls/certs/)

Step 7

修改Apache SSL設定檔
對照上一步驟的表格,搜尋參數名稱『SSLCACertificateFile』、『SSLCertificateFile』、『SSLCertificateKeyFile』,並且修改憑證檔路徑!

可能要順便注意的參數名稱:『ServerName』、『ServerAlias』、『DocumentRoot』、『SSLEngine』、『SSLProtocol』、『SSLCipherSuite』、『<Directory /xxx/xxx>』
修改完畢就存檔離開

Step 8

修改httpd.conf,強制http自動導向https

找到你的站台,在這次要申請SSL的站台的這定區塊裡面加入以下設定

重啟Apache(httpd)

大功告成

Step 9

以Firefox瀏覽看看

點一下左邊的灰色驚嘆號,可以看到『安全連線』的字樣!

點一下『>』向右箭頭,可以看見『驗證機構』!

用Chrome開起來看看
綠色的『安全』字樣,這就是我們要的!

Chrome要怎麼看發證機構?
Developer Tools  >  Security (頁籤)  >  View certificate (按鈕)

Andy Wang

站在巨人的肩膀上仍須戰戰兢兢!

10 thoughts on “如何申請免費SSL?又要怎麼安裝SSL?(以SSL For Free – Let’s Encrypt為例)

  • 2018-05-04 at 17:43:01
    Permalink

    找到你的站台,在這次要申請SSL的站台的這定區塊裡面加入以下設定…..
    RewriteEngine On
    RewriteCond %{SERVER_NAME} !^443$
    RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
    —————————————————————————————————————
    不好意思,做到只差最後一步,不知以上這段應該貼httpd.conf的哪裡?

    Reply
    • 2018-05-04 at 23:18:33
      Permalink

      像是如果我的站台下架了好幾個站,就會用VirtualHost來區隔!
      以VirtualHost來說的話就會像下面那樣:

      <VirtualHost *:80>
      DocumentRoot "xxxxx"
      ServerName www.brilliantcode.net
      ServerAlias www.brilliantcode.net brilliantcode.net
      ErrorLog "xxxxx"
      <Directory /xxxxx/xx/xxx/>
      ... xxx ...
      </Directory>

      #加在這
      RewriteEngine On
      RewriteCond %{SERVER_NAME} !^443$
      RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]
      </VirtualHost>

      若是只有一個站台,那就要找到設定『網站根目錄的資料夾權限』或是設定『網站根目錄』的地方,把RewriteEngine那幾個設定就放在上述其中一個設定的後面!
      (這樣才不會忘了放在哪 😀 )

      #網站根目錄
      DocumentRoot "網站根目錄"
      #網站根目錄資料夾權限
      <Directory /網站根目錄/>
          ... xxx ...
      </Directory>
      #加在這
      RewriteEngine On
      RewriteCond %{SERVER_NAME} !^443$
      RewriteRule ^(.*)?$ https://%{SERVER_NAME}$1 [L,R]

      Reply
  • 2018-12-26 at 09:24:19
    Permalink

    博主你好!這個SSL憑證申請有效期90天,請問如何續期呢?

    Reply
    • 2018-12-26 at 11:34:34
      Permalink

      Hi 小小,
      你可以參考 Certbot 這個套件,這個小程式安裝在伺服器上可以幫你更新SSL,然而你可以設定程式每隔60天自動執行一次,這樣就可以達到自動續期的效果了。
      關於Certbot的用法可以參考這篇文章的做法:https://www.brilliantcode.net/941/how-to-renew-ssl-certificates-automatically-by-certbot/

      如果伺服器不是Linux,可能就需要再尋找其他辦法。

      Reply
  • 2019-05-11 at 14:27:32
    Permalink

    你好
    請問我點選中間的手動驗證,他會出現”錯誤,請嘗試使用附近的驗證頁面頂部的鏈接再生您的帳戶。如果不工作,那麼請聯繫我們進行修正:”,並無法下載驗證的檔案,這個問題,我該如何繼續呢?

    Reply
    • 2019-05-12 at 00:59:41
      Permalink

      麻煩您提供系統回應你的原文給我,你貼上的訊息看起來很像是經過翻譯的內容,有點不太明白它的意思。

      Reply
      • 2019-05-12 at 14:11:37
        Permalink

        英文 “Error please try regenerating your account by using the link near the top of the verification page. If that does not work then please contact us for a fix:”

        謝謝你的回答。

        Reply
  • Pingback:如何使用certbot自動更新SSL憑證 (CentOS 6,7,8, Ubuntu) - BrilliantCode.net

  • Pingback:CentOS 7 架站教學彙整 (Apache 2.4 + MySQL 5.7 + php 7 + phpMyAdmin + SSH + sFTP) - BrilliantCode.net

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料