使用 OpenSSL 建立自簽憑證

使用 OpenSSL 建立自簽憑證

基本上按照下列步驟,就一定能建立出合法的自簽憑證:

  1. 建立 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 = iChainwin Inc.
OU = IFSD
emailAddress = lai@i-chainwin.com
CN = i-chainwin.com
​
[v3_req]
subjectAltName = @alt_names
​
[alt_names]
DNS.1 = *.i-chainwin.com
DNS.2 = i-chainwin.com
IP.1 = 192.168.2.100

上述設定檔內容的 [dn] 區段 (Distinguished Name) 為憑證的相關資訊,你可以自由調整為你想設定的內容,其中 O (Organization) 是公司名稱,OU (Organization Unit) 是部門名稱,而 CN (Common Name) 則是憑證名稱,你可以設定任意名稱,設定中文也可以,但請記得檔案要以 UTF-8 編碼存檔,且不能有 BOM 字元。設定檔的 [alt_names] 區段,則是用來設定 SSL 憑證的域名,這部分設定相當重要,如果沒有設定的話,許多瀏覽器都會將憑證視為無效憑證。這部分你要設定幾組域名都可以,基本上沒有什麼上限,因為自簽憑證主要目的是用來開發測試之用,因此建議可以把可能會用到的本機域名 (localhost) 或是區域網路的 IP 地址都加上去,以便後續進行遠端連線測試。如果你希望在 Google Chrome 瀏覽器也能瀏覽受信任的 SSL 網站,那麼設定正確的域名是非常重要的,這部分的相關知識我在 如何使用 PowerShell 建立開發測試用途的自簽憑證 (Self-Signed Certificate) 這篇文章中有完整說明。

2. 透過 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請注意:上述命令會建立一個「未加密」的私密金鑰檔案,使用 PEM 格式輸出。

3. 透過 OpenSSL 命令產生 PKCS#12 憑證檔案 (*.pfx*.p12)如果你想將建立好的 私密金鑰 (server.key) 與 憑證檔案 (server.crt) 組合成一個 PFX 憑證檔案 (PKCS#12),可以透過以下命令產生 server.pfx 檔案。由於 *.pfx 格式的檔案必須設定一組密碼,因此在執行過程中會需要輸入密碼,用以保護這個 *.pfx 檔案。openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx

如此以來,你就擁有三個檔案,分別是:

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

發佈留言