[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

Python Type Annotations for a Generator

Python Type Annotations for a Generator

淺談 Jamstack 架構

淺談 Jamstack 架構

D3_交作業流程跟心態培養

D3_交作業流程跟心態培養


Comments