[WordPress] 使用 DNS 手動驗證的方式,取得 SSL for Free 的 HTTPS 憑證
之前使用了 SSL for Free 這個服務,讓我的 WordPress 網站可以支援 HTTPS,
但 SSL for Free 簽發的憑證都只有三個月效期,
這幾天收到了通知信,說離 11/30 的效期截止日只剩一星期了:
想來更新憑證時,卻出現問題了~
原本我都是選 Manual Verification,
上傳一個檔案到網站上,讓 SSL for Free 可以驗證,
但之前可以成功,這次卻怎麼樣都不行…
直接去連像這樣的網址
https://ephrain.net/.well-known/acme-challenge/PEvUQf2wFY6FCuyJXdHWnrmAEg-YyH1fSqALacsYhLc
都會出現 HTTP 404 錯誤,說網頁找不到…
直接連進 Google Cloud Platform 的 VM 上,用 curl 連 localhost 的話是沒問題的:
testuser@wordpress-multisite-1-vm:~ $ curl -L -v http://localhost/.well-known/acme-challenge/PEvUQf2wFY6FCuyJXdHWnrmAEg-YyH1fSqALacsYhLc * Trying 127.0.0.1... * Connected to localhost (127.0.0.1) port 80 (#0) > GET /.well-known/acme-challenge/PEvUQf2wFY6FCuyJXdHWnrmAEg-YyH1fSqALacsYhLc HTTP/1.1 > Host: localhost > User-Agent: curl/7.45.0 > Accept: */* > < HTTP/1.1 200 OK < Date: Sat, 25 Nov 2017 14:43:22 GMT < PEvUQf2wFY6FCuyJXdHWnrmAEg-YyH1fSqALacsYhLc.U-zRQI8OmiVSdvrG-T4OMc6VXYp0zD7COx3-0Sq-Lv4
但把 localhost 換成 ephrain.net 的話,就會變 HTTP 404 錯誤:
testuser@wordpress-multisite-1-vm:~ $ curl -L -v https://ephrain.net/.well-known/acme-challenge/PEvUQf2wFY6FCuyJXdHWnrmAEg-YyH1fSqALacsYhLc * Trying 35.185.170.101... * Connected to ephrain.net (35.185.170.101) port 80 (#0) > GET /.well-known/acme-challenge/PEvUQf2wFY6FCuyJXdHWnrmAEg-YyH1fSqALacsYhLc HTTP/1.1 > Host: ephrain.net > User-Agent: curl/7.45.0 > Accept: */* > < HTTP/1.1 404 Not Found < Date: Sat, 25 Nov 2017 14:43:47 GMT
這實在是很奇怪的問題…
為什麼 localhost 可以,實際的網域名稱就不行呢?
研究了半天,暫時沒有解答…
不過幸好 SSL for Free 還有第三種驗證方式,
那就是在 DNS 上加 TXT 記錄,讓 SSL for Free 來驗證~
下面就記錄一下過程吧~
到 SSL for Free 網站上,選擇 Manual Verification (DNS):
簡單說明了一下驗證的方法,按下按鈕繼續:
這邊會列出詳細的步驟~
基本上就是在網站的網域 DNS 上,加上指定的 TXT 記錄:
像我的網域名稱 ephrain.net 是向 Google Domains 購買的,
因此就到 https://domains.google.com/ 網站 > DNS,
輸入指定的 TXT 記錄,如下圖:
輸入好之後,可以回到 SSL for Free 網頁,
點下 Verify _acme_challenge.<網域名稱> 的連結。
如果 SSL for Free 可以成功取得 DNS 的 TXT 記錄的話,
可以看到像下面的結果:
不過有時候 DNS 的設定並不會很快更新…
可以試著把 TTL 調小 (像 Google Domains 最小可以設 60s 或 1m),
不過當我調小之後,也不是一分鐘後就立刻可以查到,
大約等了幾分鐘後再回來試,才成功了~
Verify 可以成功的話,就可以按下 Download SSL Certificate 的按鈕,下載 SSL 憑證,
之後就和 在 Bitnami WordPress 網站上啟用 HTTPS 這篇記錄的一樣,
把 SSL 憑證上傳到網站上,設定好重啟 Apache 服務就行了~
想確認 SSL 憑證已經更新的話,要先關閉 Chrome (Chrome 會快取憑證) 再重開,
如果 Chrome 的顯示憑證功能有開的話,
點選網址列的鎖頭圖案 > Certificate > Valid,就能看到新的憑證,
也能確認效期是到三個月之後囉: