内容简介:很久以前介紹過但隨著時代演進,需求有點變化:第一點增加了需要製作憑證的頻率,每新增一台伺服器就需簽發一張憑證有點費事,
很久以前介紹過 使用 OpenSSL 建立 CA 並簽發 SSL 憑證 , 相較於自我簽署憑證,客戶端可安裝自訂 CA 憑證避免程式 因不信任自製憑證無法連線 。
但隨著時代演進,需求有點變化:
- HTTPS 已成資安基本要求,即使企業內部通訊也常被要求走 HTTPS,製作憑證的需求大增
- 2017 年 Chrome 58 / Firefox 48 開始要求憑證 必須改用 SubjectAltName 欄位提供主機名稱 ,否則將顯示為不安全
第一點增加了需要製作憑證的頻率,每新增一台伺服器就需簽發一張憑證有點費事, 萬用字元憑證 能讓我們省點力氣。 傳統憑證簽發對象只能指定特定網域名稱,例如:www.darkthread.net、api.darkthread.net。 而萬用字元憑證將適用對象擴大為特定網域下的任何網域名稱,例如:只要製作一張 *.darkthread.net 憑證, 即可安裝在 www.darkthread.net、blog.darkthread.net、api.darkthread.net、store.darkthread.net 等多個網站, 都視為有效。
第二點屬於憑證標準改變,導致過去做法製作的憑證,現在會被瀏覽器或客戶端視為不安全。
有鑑於此,2019 年版「使用 OpenSSL 製作萬用字元 SSL 憑證」食譜來了。
以下示範如何在 Windows 主機使用 OpenSSL 建立 CA 憑證並簽發萬用字元憑證。
- 第一步是要取得 OpenSSL。在 Windows 上過去需自行下載安裝,若為 Windows 10, 可考慮使用 Windows 上 Ubuntu 的 Bash , 但我最建議的做法是使用 Windows 工程師必備神器 Cmder 最省事, 下面也會以 Cmder 此示範。(還沒用過 Cmder 的同學可以試試,相信你也會愛上它的)
- 準備一個目錄放置產生的憑證,在此以 D:\SSL 示範
- 執行
openssl genrsa -des3 -out rootCA.key 4096
產生 rootCA.key,過程需設定密碼,稍後會用到 - 執行
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 36500 -out rootCA.crt
產生 CA 憑證 rootCA.crt
題外話:days 參數為有效期限,之前遇過系統上線時隨手設了某個有效期限十年心想綽綽有餘,某天系統壞了,調查半天才驚覺程式已 默默跑了十年沒改版,這才悔恨自己看得不夠遠...
所以,憑證有效期限怒抓 100 年(36500)好了 XD 這是玩笑,依硬體能力增強的速度,資安防護相關的東西應該就擋不住必須升級。 建立憑證時要用到步驟 3. 設定密碼,接著要回答一串問題,若為內部使用,輸入內容不重要,程序完成後會得到 rootCA.crt。
- 這樣 CA 根憑證就做好了,應用時記得要安裝到客戶端。參考:憑證儲存區的選擇
- 接著要決定萬用字元憑證的域名,在這裡以 *.darkthread.net 為例
- 先產生萬用字元的憑證金鑰 openssl genrsa -out darkthread-net.key 2048
- 準備憑證要求的設定檔 darkthread-net.cnf 如下:
[req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn [dn] C=TW ST=Taiwan L=Taipei O=Darkthread OU=Darkthread CA emailAddress=nobody@darkthread.net CN=*.darkthread.net
- 執行
openssl req -new -sha256 -nodes -key darkthread-net.key -out darkthread-net.csr -config darkthread-net.cnf
建立憑證請求darkthread-net.csr - 準備 V3 設定檔 darkthread-net-v3.ext
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = *.darkthread.net
- 執行
openssl x509 -req -in darkthread-net.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out darkthread-net.crt -days 36500 -sha256 -extfile darkthread-net-v3.ext
,建立憑證 darkhread-net.crt,過程需要使用步驟 3 設定的密碼 - 要使用於 IIS,需將 .crt 轉為包含私鑰的 .pfx 格式,指令為
openssl pkcs12 -export -out darkthread-net.pfx -inkey darkthread-net.key -in darkthread-net.crt -certfile rootCA.crt
,執行後得到 darkthread-net.pfx,過程需要設定一組密碼,稍後在 IIS 安裝憑證時會用到。
- 開啟 IIS 管理介面,找到「伺服器憑證」,使用匯入功能匯入 darkthread-net.pfx
- 設定 HTTPS 繫結時就可以選取新做好的憑證
- 使用 Chrome 實測,完全符合安全要求,大功告成!
最後提醒一點,若想共用該 CA 憑證簽發其他伺服器憑證,記得妥善保存相關檔案及密碼。
Tutorial of wildcard certificate creation with OpenSSL on Windows and how to install it to IIS.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 木兰编程语言重现:完善函数功能,常用字拆分数据处理实例
- RecyclerView使用指南(一)—— 基本使用
- 如何使用Meteorjs使用URL参数
- 使用 defer 还是不使用 defer?
- 使用 Typescript 加强 Vuex 使用体验
- [译] 何时使用 Rust?何时使用 Go?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。