iT邦幫忙

0

Let’s Encrypt 只能用於全世界都查得到的 domain name?我用 win-acme 踩雷的實測紀錄

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250702/20155103lILaie93ky.png

一次實驗讓我理解——免費憑證不是「本機模擬」就能用!

最近我在企業內部環境,嘗試使用 Let's Encrypt 免費憑證,搭配 win-acme 工具在 IIS 建立 HTTPS 架站。想法很單純:「內網 IP + 自架 DNS domain + 免費憑證」不就剛剛好?

但實際操作後,我發現:

❌ 若 domain name 不能被 Let's Encrypt 的伺服器從外部正常連線驗證,就算一切設定正確,還是會「永遠簽不過」。


🧩 Let's Encrypt 跟 win-acme 是什麼?

工具 角色
Let's Encrypt 免費的憑證機構(CA),負責發出 SSL 憑證
win-acme Windows 專用的憑證申請工具,協助自動完成申請、驗證、安裝與續期

你可以把它們的關係想成這樣:

你(管理者) ←→ win-acme(助理) ←→ Let's Encrypt(CA) ←→ 憑證產生 → 裝到 IIS

⚙️ 我的測試環境與需求

  • 使用 IIS 架設網站,綁定內部 IP 10.120.100.171
  • 用自架 DNS 對應 domain www.sitea.com
  • 將使用者導向 http://www.sitea.com 來登入 EIP 系統
  • 想用 win-acme 自動申請免費 HTTPS 憑證

結果:失敗多次。


❌ 錯誤訊息範例

Invalid response from http://www.sitea.com/.well-known/acme-challenge/xxx: 404
Authorization result: invalid

✅ win-acme 成功放入驗證檔案,但 Let's Encrypt 無法從外部抓到。


⚠️ 如果我在本機 IIS 把 domain name 設成 google.com 會發生什麼事?

這是一個很多人會好奇但 實際不能做的錯誤操作

即使你把站台設成 www.google.com,並在 hosts 檔中加入 127.0.0.1 www.google.com,Let's Encrypt 驗證時仍會走它自己的 DNS → 連到 Google 真實伺服器 → 找不到驗證檔案 → 驗證失敗。

若重試太多次還可能觸發封鎖,甚至導致出網 IP 被列為濫用來源。


✅ 那我用 AWS EC2 + Route53 的網域,能測試嗎?

可以!這是最標準且推薦的方式:

  1. 在 Route53 設定 A 記錄 www.mydomain.com → EC2 公網 IP
  2. EC2 上裝好 IIS / Apache / Nginx
  3. 開啟 Port 80/443
  4. 用 win-acme / certbot 申請 Let's Encrypt 憑證
  5. 測試 https://www.mydomain.com 是否成功

✅ 免費憑證 vs 付費憑證,我該用哪種?

項目 免費憑證(Let's Encrypt) 付費憑證(DigiCert、GlobalSign 等)
成本 ✅ 免費 ❌ 年費
有效期 90 天(自動續期) 1 年以上
驗證層級 DV(域名驗證) 可選 DV / OV / EV
顯示公司名稱 ❌ 否 ✅ 是
適合場景 個人站、內網、測試 商業站、金融、B2B 串接

🛠️ 結論與建議

  • ✅ 若你控制 DNS 與伺服器,Let's Encrypt 是免費又好用的選擇
  • ❌ 若只是內網測試或用他人網域,請改用自簽憑證或購買合法商用 SSL


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

2
DennisLu
iT邦好手 1 級 ‧ 2025-07-04 11:51:14

做那項實驗的時候,
OS dns快取跟瀏覽器本身的DNS快取都要清除。
https://hackmd.io/@dennisxkimo/SJnNZKsVxx
我曾經拿花錢簽發憑證 内網測試 搭配修改 hosts 瀏覽器是給過的。

Domain name > 指向 實體IP , http(80) 指向 ACME certbot 電腦的web,就可以簽發成功。
再把簽回來的憑證,掛在真的https(443)的web服務。
當然同一台也是可以,但更新時間與防火牆的開放80排程可以做好,不用時時刻刻都開80 port。

我個人是利用docker container跑acme更新憑證,再將憑證檔丟到正式的https web server去生效。
https://hackmd.io/@dennisxkimo/rkeOK7Jyel

我要留言

立即登入留言