當網站加入 SSL 加密協定(HTTPS,網址列會是綠色鎖頭圖示),就不會被讀者誤會是危險網站或詐騙網站了(HTTP,是紅色鎖頭圖示)。申請方式其實很簡單,但是因為是免費的,所以每3個月需要重新申請憑證。
我覺得不會太麻煩,反正就用手機日曆功能提醒自己就好了,或者注意線上申請網站,發送的電子郵件通知信,通常會在憑證到期前一個星期會收到信件,再找個時間更新憑證就可以了!
而我也是最近才搞清楚 Let’s Encrypt、SSL For Free、ZeroSSL 三者的關係,在文章中會一併說明。雖然有沒有搞清楚它們之間的關係並不影響憑證的申請,純粹是基於好奇心,才會在空閒時爬文。
Let’s Encrypt、 SSL For Free、ZeroSSL 三者的關係
簡單說,從下圖可以清楚了解 Let’s Encrypt 是憑證中心,可以透過線上工具網站( ZeroSSL、SSL For Free、 Certbot)的幫忙,完成憑證申請,然後再安裝於網站當中。整個流程都是免費的,不需要額外付費。假使是免費申請的話,憑證效期只有 90 天,在期限到之前,必須再重新申請一次憑證來使用。
原本使用SSL For Free 來完成憑證申請已經好長一段時間了,可是從去年( 2020 )開始,想要重新申請憑證時,網站都會自動轉址到 ZeroSSL 來完成後續流程。一直也搞不懂原因,也害怕憑證出狀況無法使用,所以就花了一些時間了解什麼是 ZeroSSL。接下來可以看一下如何利用 ZeroSSL 網站,完成整個憑證申請的流程!

現在前往SSL For Free網站的話,可以明顯看到: Never pay for S S L again. Powered by ZeroSSL with free 90-day certificates.不難理解, ZeroSSL 網站似乎已經取代SSL For Free 網站的申請功能的原因了。

透過 ZeroSSL 網站,申請憑證的流程
申請憑證雖然很便利,但是最大的缺點就是一個帳號,只能對同一個網域申請3次憑證。簡單說,當你使用了9個月後,就無法再針對同一個網域申請免費憑證了。
有方法解決嗎?當然有,在文章最後一個章節會分享使用Certbot申請Let’s Encrypt憑證的方法,利用Certbot這個方法,就可以永久使用免費憑證了。
輸入要申請的網址
前往網站,輸入要申請憑證的網址。

建立帳號
這個帳號除了用來登入來維護所有憑證之外,還會收到未來憑證到期的提醒信件。

填寫網域

憑證效期: 90天(免費版)
順利的話,在這一步當中可以看到【Domains】是綠色符號,這代表前一步的流程是正確的。接著因為是免費版憑證申請的關係,所以只能選 90-Day Certificate 這個選項,然後點選下一步。

選取 Auto-Generate CSR

方案選擇
因為是申請免費版憑證,所以直接點選下一步。

驗證網站所有權
提供了三種驗證網站所有權的方式:
- Email Verification
- DNS ( CNAME )
- HTTP File Upload
按照說明步驟,將測試檔案放在網站中,然後點選下一步即可。


下載憑證
當驗證網站所有權沒問題之後,接著就是要選擇要下載的伺服器類型,然後把憑證下載到電腦中備份,最後按下一步。

安裝憑證到網站中
因為目前是使用 XAMPP 自架網站的關係,所以直接將剛剛下載的憑證檔案解壓縮,放在以下路徑後,開啟 XAMPP 控制面板,然後 restart Apache ,連上網站測試連線看看。假使可以正常連線的話,就完成所有憑證申請的流程了(下圖)。
- ca_bundle.crt
- 放在 C : \ xampp \ apache \ conf \ssl.crt \
- certificate.crt
- 放在 C : \ xampp \ apache \ conf \ssl.crt \
- private.key
- C : \ xampp \ apache \ conf \ssl.key \

(已停用) 透過SSL For Free 網站,申請憑證的流程
連結到網站
點選下方連結,進到網站後,在欄位中填入你要申請 Let’s Encrypt 憑證的網域名稱,再用空白鍵來輸入不同的網址,例如
- 申請網站: https://www.sslforfree.com/
- 輸入網域名稱 (範例) : 【 hipay0.com www.hipay0.com 】
- 點選按鈕: 【 Create Free Certificate 】

使用 Manual Verification
可以看到剛剛輸入想要申請憑證的網址會列在最上方,假使正確的話,就可以按【 Manual Verification 】
- Manual Verification
- Upload verification files manually to your domain to verify ownship

Manually Verify Domain
滑鼠往下滑動,然後按【 Manually Verify Domain 】

建立 .well-known 資料夾
先打開 command windows ,在安裝 WordPress 的路徑下新增【 .well-known 】資料夾:
- cd \
- cd C : \ wamp64 \ www \ spa
- mkdir .well-known

建立 acme-challenge 資料夾
然後開啟檔案總管,在 C : \ wamp64 \ www \ spa \ .well-known \ 的路徑下再新增【 acme-challenge 】資料夾

Download Certificate
在下方【 1 】的兩個檔案下載到【acme-challenge】的資料夾下,然後點選下方【 2 】兩個連結,假使能夠開啟新的網頁,而且正確顯示文字的話,就代表成功了。接著按下【 Download Certificate 】按鈕

設定通知信箱
接著會出現帳號登入的畫面,就輸入你常用的 email 信箱,這樣子,憑證到期前一周,會透過這個 email,通知你要更新憑證。

下載憑證到電腦
然後把憑證下載到電腦

解壓縮憑證檔案
解壓縮後複製到 C : \ wamp64 \ bin \ apache \ apache2.4.37 \ conf ,這樣子就完成憑證申請了。

驗證網站
最後,在瀏覽器網址列輸入【 https://hipay0.com/ 】,假使可以進入登入畫面,就表示成功了!
使用Certbot可以完全免費申請憑證
跟上述兩個方法相比,過程的確比較複雜一點,照著下面的流程,相信你也可以完成申請。
下載 Certbot 工具
前往 https://certbot.eff.org/ 下載 certbot-beta-installer-win32.exe 的安裝檔案,然後執行程式,然後會安裝至 C:\Program Files (x86)\Certbot 的目錄底下。
確認 Certbot 是否有安裝成功
打開系統管理員身份執行開啟 Command Prompt,然後輸入以下指令:
C:\Windows\system32>cd C:\Program Files (x86)\Certbot
C:\Program Files (x86)\Certbot>certbot --version
certbot 1.20.0
C:\Program Files (x86)\Certbot>certbot -h
certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...
.
.
.
-h all print a detailed help page including all topics
--version print the version number
建立憑證
以我的 hipay0.com 網域名稱為範例,輸入以下命令同時產生 hipay0.com 網域憑證與 *.hipay0.com 萬用子網域憑證。
C:\Program Files (x86)\Certbot>certbot certonly --manual -m YOUR-EMAIL@gmail.com -d hipay0.com -d *.hipay0.com
接下來會詢問你兩個問題,
- 是否要【顯示偵錯紀錄檔的路徑】與【同意服務使用條款】,按下【y】進行下一步
- 是否要提供 E-mail 給 Electronic Frontier Foundation (EFF)?按下【y】進行下一步
然後,就準備發出憑證請求了。
Requesting a certificate for hipay0.com and *.hipay0.com
需要完成兩個認證流程
雖然申請 Let’s Encrypt 免費憑證時,通常只需要選擇一種認證流程就好了,但是這次的範例是要申請憑證給 hipay0.com 單一域名,與另一個 *.hipay0.com 萬用域名使用,所以,兩個域名要使用不同方法完成認證。
1. 單一域名 : 必須讓 Let’s Encrypt 網站能夠存取你的網址(要開放 Port 80 進行 HTTP 連線),這樣子就能驗證網站的擁有者!
2. 萬用域名 : 前往你的DNS服務商,新增一筆 TXT 紀錄到 _acme-challenge.hipay0.com 的域名上,並將其值設定為 iqzzzNZ-_USmmmUk,然後按下 Enter 繼續!
單一域名認證方式:
在網站跟目錄底下,新增【.well-known】的資料夾,然後在這個資料夾底下,新增一個檔案,檔名是【5mxxxFw】,而這個檔案的內容是【5mxxxFw.i5yyyC0】
Create a file containing just this data:
5mxxxFw.i5yyyC0
And make it available on your web server at this URL:
http://hipay0.com/.well-known/acme-challenge/5mxxxFw
萬用域名認證方式:
以我的例子來說明,前往Cloudflare然後新增一筆 TXT 紀錄到 _acme-challenge.hipay0.com 的域名上,並將其值設定為 iqzzzNZ-_USmmmUk,就完成了。
Please deploy a DNS TXT record under the name:
_acme-challenge.hipay0.com.
with the following value:
iqzzzNZ-_USmmmUk
Before continuing, verify the TXT record has been deployed... You can
check if it has finished deploying with aid of online tools, such as the Google
Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.hipay0.com.
...
完成 Let’s Encrypt 憑證申請
當你看到以下文字,表示憑證已經建立完成了,可以前往路徑下,把憑證放在網站相對應的資料夾裡面。
Successfully received certificate.
Certificate is saved at: C:\Certbot\live\hipay0.com\fullchain.pem
Key is saved at: C:\Certbot\live\hipay0.com\privkey.pem
This certificate expires on 2022-01-21.
These files will be updated when the certificate renews.
NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
修改httpd-ssl.conf
最後一步,照著下面的路徑,把相對應的憑證放到對的資料夾,然後也要修改httpd-ssl.conf這個檔案。清除快取,重開Apache,打開網站假使有看到綠色鎖頭,就表示全部流程都完成了。
打開設定檔: \conf\extra\httpd-ssl.conf
將 Line 149 改成: SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/cert.pem"
將 Line 169 改成: SSLCertificateChainFile "C:/xampp/apache/conf/ssl.crt/chain.pem"
將 Line 180 改成: SSLCACertificateFile "C:/xampp/apache/conf/ssl.crt/fullchain.pem"
將 Line 159 改成: SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/privkey.pem"
Windows 10 自架網站流程圖
只要照著我的步驟做,相信你也可以不用額外花半毛錢,就可以在 Windows 10 的電腦上面,架設好屬於自己的專屬網站了(這篇文章可以看到自架網站的完整敘述)。而這系列的分享文章,是寫給架站新手 / 小公司 / 部落客的,不適用於大型企業 / 大神級…
網站DIY流程圖
Step 1、準備好硬體
– 路由器
初期: 拿現有的路由器,具備設定通訊阜轉發就可以了。
後期: 決定要持續維護網站後,最好更換成具備防火牆功能的產品。畢竟防火牆功能的路由器,價格都不便宜。本身使用的都是入門款的防火牆(Vigor2120n使用心得),到現在,網站還沒中毒或被駭的經驗。只是每天在後台都看到一堆惡意連線,心裡難免怕怕的,所以只能靠硬體防火牆多少排除一下這些狀況。
進階: 自架免費防火牆OS(pfsense的使用心得),可以操作的細部功能更多了,防火牆設定也變得靈活。
Step 2、安裝架站安裝包
– 設定 phpMyadmin (可以參考: 在Windows10架設WordPress網站)
– 設定 WordPress(可以參考上面連結: 在Windows10架設WordPress網站)
Step 3、申請 DDNS
Step 4、申請 SSL 數位憑證
Step 5、軟體設定
– Apache 、WordPress、mySQL、phpMyadmin…的參數微調,全部都集中在VirtualHost 設定這一篇做分享。
6、網站上線
– 快速找到惡意連線 IP 的方法
– 如何提供 Pagespeed Insights 的分數
– 如何提高網站排名
– 如何改善SEO 的問題
– 如何提高流量
– 如何增加被動式收入、加入聯盟行銷
– 如何使用 Google Keyword Planner
-…
你可能有興趣: 你知道個人網站也是需要製作 logo 的原因嗎?
Q&A
透過 ZeroSSL 網站申請憑證的話,需要安裝其他程式嗎?
不用。無須下載或安裝任何外掛程式,只需要透過瀏覽器,在網站中填入相關資訊,照著憑證產生精靈的步驟做即可或取憑證。
ZeroSSL申請憑證有次數限制嗎
有,無法無限次數續用。
為什麼免費版憑證只有 90 天的有效期限呢?
跟密鑰洩露和誤發行有關係,假使發生錯誤或被盜的話,可以在較短的時間內發現、解決。
只能透過 ZeroSSL or SSL_For_Free 來申請憑證嗎?
幾個常見的網站都提供憑證申請:
1. Let’s Encrypt: https://letsencrypt.org/
2. Certbot: https://certbot.eff.org/
3. WoSign’s KuaiSSL: 網站似乎有問題,無法連線
4. Free SSL Certificate: https://www.freesslcertificate.org/
免費版憑證,只能考慮使用 Let’s Encrypt 嗎?
可以有其它選擇,例如: The better option is provided by Cloudflare.
Cloudflare 不僅只是 CDN service provider,也提供免費版的憑證讓 CDN 用戶使用。
如何快速找到惡意爬蟲的IP?
SSL 的確是提高網站資安的方法之一,但是分析 Apache log 找出惡意連線 IP,也是另一個需要執行的一件事。分享兩個免費方法,讓你輕鬆又快速分析 log,揪出惡意連線的 IP 。
2021-12-25更新: 想要完全免費使用憑證的話,建議採取【Certbot】的方式,才能不限次數使用免費的憑證。