[Web] 使用 OpenSSL 建立開發測試用途的自簽憑證(Self-Signed Certificate)和設置Domain Name


Posted by mike-hsieh on 2024-05-15

這次要實作 OpenSSL 來建立自簽憑證和設置Domain Name,這個憑證是用來做開發測試用途,不是真正的憑證,所以不用花錢買,只要自己建立就可以了。
本次多數都是參照保哥的文章,由於我使用 windows,如果是 linux 或其他系統的話,請參照保哥的文章。

實作環境: 本機

以下示範如何在 Windows 主機使用 OpenSSL 建立 CA 憑證。

一. 第一步是要取得 OpenSSL。建議使用 Cmder,以下也以 Cmder 示範。(https://cmder.app/ 下載mini版本即可。)


二. 建議目錄放置產生的憑證,以 D:\SSL 示範


三. 建立 ssl.conf 設定檔,內容如下:

[req]
prompt = no
default_md = sha256
default_bits = 2048
distinguished_name = dn
x509_extensions = v3_req
[dn]
C = TW
ST = Taiwan
L = Taipei
O = miketest1234 CA
OU = miketest1234 CA
emailAddress = miketest1234@mail.com
CN = .miketest1234.net
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 =
.miketest1234.net
DNS.2 = *.localhost
DNS.3 = localhost
IP.1 = 127.0.0.1


四. 透過 OpenSSL 命令產生私密金鑰(server.key) 與 自簽憑證檔案(server.crt):

 openssl req -x509 -new - nodes - sha256 - utf8 - days 3650 - newkey rsa: 2048 - keyout server.key -out server.crt - config ssl.conf


五. 透過 OpenSSL 命令產生 PKCS#12 憑證檔案 (.pfx 或 .p12),此步驟要輸入密碼來保護憑證檔案。

openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx



六. 喜獲三個檔案

  • server.key (私密金鑰)(使用 PEM 格式)(無密碼保護)
  • server.crt (憑證檔案)(使用 PEM 格式)
  • server.pfx (PFX 檔案)(使用 PKCS#12 格式)(設定 IIS 網站繫結的時候,必須使用 PFX 格式的憑證檔案)


七. 匯入自簽憑證到「受信任的根憑證授權單位」

步驟: 雙擊 server.crt 檔案,點選安裝憑證,選擇「將憑證存放在以下存放區」,選擇「受信任的根憑證授權單位」,完成安裝。
*假如是在公司內部,那就要在公司的電腦上安裝這個憑證,這樣公司的電腦才會信任這個憑證。
*如果外部也要可以連線,那就要像CA申請憑證一樣,把這個憑證發給CA,讓CA簽發一個真正的憑證,就不用每台電腦要安裝憑證了。

八. 設定 IIS 網站憑證以及繫結(請參照圖片即可)





九. 設定 Domin Name

由於目前是開發測試用途,所以要設定 Domain Name,這樣才能在瀏覽器上正確顯示。
以管理員權限打開 C:\Windows\System32\drivers\etc\hosts
添加此行: 127.0.0.1 www.miketest1234.net
作用是當網址輸入 www.miketest1234.net 時,會導向到 127.0.0.1 這個 IP 位置(也就是localhost了)。

注意!!! 這邊是模擬DNS Server進行轉址,如果是外部要使用,那就要去購買一個不重複 Domain Name,例如: Namecheap、Godaddy、Google Domains。


十.確認效果

修改完可能有cache,所以可以重啟IIS,瀏覽器清除緩存,並於Url輸入 www.miketest1234.net

ping www.miketest1234.net 時,也會取得 127.0.0.1 回來的封包。


補充:

為了讓一個網站正常運作,需要至少兩個基本元素一個網域名稱和一個 SSL/TLS 憑證。這裡是這兩者的基本用途和如何獲得它們的簡要說明:
1.網域名稱
用途:網域名稱是您網站的網絡地址,使人們能夠透過一個易於記憶的名稱(如 example.com)來訪問您的網站,而不需要記住 IP 地址。
如何獲得:網域名稱需要通過網域名稱註冊商購買。註冊商如 GoDaddy、Namecheap 等公司提供網域名稱註冊服務。註冊一個網域通常需要支付年費,並且每年需要續費以保持網域名稱的擁有權。
2. SSL/TLS 憑證
用途:SSL/TLS 憑證用於保護網站和訪客之間的數據交換,通過加密數據來保護資訊免受竊聽和篡改。這是尤其在處理敏感信息(如信用卡資料、登錄資訊等)時非常重要。
付費購買:SSL/TLS 憑證可以通過多種途徑獲得:付費方式如 Symantec、Comodo、DigiCert 等。
免費獲取:可由 Let's Encrypt 等非營利機構免費獲得,這些憑證通常有效期為 90 天,需要定期更新。



windows上如何查看憑證:

  1. 在策略伺服器上,按一下「開始 → 執行 or windows + R」。
    會開啟「執行」畫面。
  2. 在「開啟」方塊中輸入 mmc,
    會開啟新的管理主控台畫面。
  3. 按一下「 主控台 → 新增/移除嵌入式管理單元。
    會出現「新增/移除嵌入式管理單元」畫面。
  4. 按一下「新增」。
    會出現「新增獨立嵌入式管理單元」畫面。
  5. 按一下「憑證」,然後按一下「新增」,
    會開啟「憑證嵌入式管理單元」畫面。
  6. 按一下「電腦帳戶」,然後按一下「下一步」,
    會開啟「選擇電腦」畫面。
  7. 按一下「本機電腦」,然後按一下「完成」。
  8. 按一下「關閉」以關閉「新增獨立嵌入式管理單元」畫面。
  9. 按一下「確定」以關閉「新增/移除嵌入式管理單元」畫面。
  10. 在主控台樹狀結構檢視中,按一下「憑證(本機電腦) → 信任的根憑證授權 → 憑證」。
    從清單中選取憑證。
    注意
    注意
    按兩下憑證並選取「內容」,查看憑證指模。指模應該與位於 IIS 主控台的憑證指模相同。
    如果要確認指模是否相同,請開啟 IIS 主控台並以滑鼠右鍵按一下「虛擬網站」或「預設網站」(視您安裝策略伺服器的網站而定),然後選取「內容」。按一下「目錄安全性」,然後按一下「檢視憑證」以檢視憑證指模等憑證詳細資訊。
  11. 按一下「動作 → 所有工作 → 匯出...」。會開啟「憑證匯出精靈」。
  12. 按「下一步」。
  13. 按一下「DER 編碼二位元 x.509」或「Base 64 編碼 X.509」,然後按一下「下一步」。
    輸入檔案名稱並瀏覽至要匯出憑證到其中的目錄。
  14. 按「下一步」。
  15. 按一下「完成」,會顯示確認視窗。
  16. 按一下「確定」。



參考資料:
一、https://blog.miniasp.com/post/2019/02/25/Creating-Self-signed-Certificate-using-OpenSSL
二、https://blog.darkthread.net/blog/issue-wildcard-ssl-cert-with-openssl/
三、https://docs.trendmicro.com/all/ent/officescan/v10.6/zh-tw/osce_10.6_sp1_olh/ps_ssl_prepare_iis.html


#openssl #DNS #Self-signed certificate







Related Posts

利用 Elm 製作 Chrome Extension

利用 Elm 製作 Chrome Extension

清晰說明針孔相機的內部參數與外部參數矩陣

清晰說明針孔相機的內部參數與外部參數矩陣

使用 Python 進行中斷點 step by step debug 除錯

使用 Python 進行中斷點 step by step debug 除錯


Comments