使用 OpenSSL 製作萬用字元 SSL 憑證

栏目: 编程工具 · 发布时间: 5年前

内容简介:很久以前介紹過但隨著時代演進,需求有點變化:第一點增加了需要製作憑證的頻率,每新增一台伺服器就需簽發一張憑證有點費事,

很久以前介紹過 使用 OpenSSL 建立 CA 並簽發 SSL 憑證 , 相較於自我簽署憑證,客戶端可安裝自訂 CA 憑證避免程式 因不信任自製憑證無法連線

但隨著時代演進,需求有點變化:

  1. HTTPS 已成資安基本要求,即使企業內部通訊也常被要求走 HTTPS,製作憑證的需求大增
  2. 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 憑證並簽發萬用字元憑證。

  1. 第一步是要取得 OpenSSL。在 Windows 上過去需自行下載安裝,若為 Windows 10, 可考慮使用 Windows 上 Ubuntu 的 Bash , 但我最建議的做法是使用 Windows 工程師必備神器 Cmder 最省事, 下面也會以 Cmder 此示範。(還沒用過 Cmder 的同學可以試試,相信你也會愛上它的)
  2. 準備一個目錄放置產生的憑證,在此以 D:\SSL 示範
  3. 執行 openssl genrsa -des3 -out rootCA.key 4096 產生 rootCA.key,過程需設定密碼,稍後會用到
  4. 執行 openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 36500 -out rootCA.crt 產生 CA 憑證 rootCA.crt
    題外話:days 參數為有效期限,之前遇過系統上線時隨手設了某個有效期限十年心想綽綽有餘,某天系統壞了,調查半天才驚覺程式已 默默跑了十年沒改版,這才悔恨自己看得不夠遠...
    所以,憑證有效期限怒抓 100 年(36500)好了 XD 這是玩笑,依硬體能力增強的速度,資安防護相關的東西應該就擋不住必須升級。 建立憑證時要用到步驟 3. 設定密碼,接著要回答一串問題,若為內部使用,輸入內容不重要,程序完成後會得到 rootCA.crt。
    使用 OpenSSL 製作萬用字元 SSL 憑證
  5. 這樣 CA 根憑證就做好了,應用時記得要安裝到客戶端。參考:憑證儲存區的選擇
  6. 接著要決定萬用字元憑證的域名,在這裡以 *.darkthread.net 為例
  7. 先產生萬用字元的憑證金鑰 openssl genrsa -out darkthread-net.key 2048
  8. 準備憑證要求的設定檔 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
  9. 執行 openssl req -new -sha256 -nodes -key darkthread-net.key -out darkthread-net.csr -config darkthread-net.cnf 建立憑證請求darkthread-net.csr
  10. 準備 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
  11. 執行 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 設定的密碼
  12. 要使用於 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 安裝憑證時會用到。
    使用 OpenSSL 製作萬用字元 SSL 憑證
  13. 開啟 IIS 管理介面,找到「伺服器憑證」,使用匯入功能匯入 darkthread-net.pfx
    使用 OpenSSL 製作萬用字元 SSL 憑證 使用 OpenSSL 製作萬用字元 SSL 憑證
  14. 設定 HTTPS 繫結時就可以選取新做好的憑證
    使用 OpenSSL 製作萬用字元 SSL 憑證
  15. 使用 Chrome 實測,完全符合安全要求,大功告成!
    使用 OpenSSL 製作萬用字元 SSL 憑證

最後提醒一點,若想共用該 CA 憑證簽發其他伺服器憑證,記得妥善保存相關檔案及密碼。

Tutorial of wildcard certificate creation with OpenSSL on Windows and how to install it to IIS.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

微服务设计

微服务设计

[英] Sam Newman / 崔力强、张 骏 / 人民邮电出版社 / 2016-5 / 69.00元

本书全面介绍了微服务的建模、集成、测试、部署和监控,通过一个虚构的公司讲解了如何建立微服务架构。主要内容包括认识微服务在保证系统设计与组织目标统一上的重要性,学会把服务集成到已有系统中,采用递增手段拆分单块大型应用,通过持续集成部署微服务,等等。一起来看看 《微服务设计》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具