内容简介:很久以前介紹過但隨著時代演進,需求有點變化:第一點增加了需要製作憑證的頻率,每新增一台伺服器就需簽發一張憑證有點費事,
很久以前介紹過 使用 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.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入浅出Web设计(中文版)
(美)瓦特罗尔、(美)西罗托 / O'Reilly Taiwan公司 / 东南大学出版社 / 2010-11 / 99.00元
你将从《深入浅出Web设计(中文版)》学到什么?你曾经希望看看书就能学到真正的网站设计吗?曾经想过该如何同时达成让网站看起来美观,又能有效率地沟通信息,还要通过可访问性与可用性的策略吗?《深入浅出Web设计》正是精通上述主题的秘笈。我们将学到如何设计一个绝佳、用户友好的网站,上谈客户需求,下说手绘分镜表,乃至完成在线所需的HTML与css主文件……而且会有一个真正可以运作的网站!一起来看看 《深入浅出Web设计(中文版)》 这本书的介绍吧!