1. 製作前搞清楚一些概念
(1)何爲多域名證書
何爲多域名證書呢?直白點講,就是一個證書給多人使用,不用每個人都去申請一張證書。
(2)extensions字段介紹
在證書的那些事(3)之利用openssl製作證書一文中, 我們瞭解公鑰,私鑰,CSR和證書的關係,也知道了證書格式,自簽發證書和第三方證書的卻別,也清楚了CA、證書申請者是怎麼回事,當然也可以通過openssl命令製作一個簡單證書。
本文是續篇,我們知道在證書裏面除了必要的信息,例如國家名、省份名、城市名、,組織名、組織部門、通用名、郵件地址,證書的公鑰、有效期、簽名算法以及簽名指紋外,還包含了Extensions(擴展字段)。
extensions裏面內容很多,正式因爲extensions,帶給了我們證書的豐富性,解決了不少問題。例如可以指明證書的用途,可以指明證書是否可以作爲CA,給其他人簽發證書,可以讓該證書給多人使用,也就是我們所說的多域名證書。
(3)多域名證書和extensions字段的關係
extensions跟我們文章標題中提到的多域名證書有和關係呢?把多個域名都放到一個叫SAN(Subject Alternate Name)的extensions字段裏面,就形成了我們的多域名證書。
當然了,extensions字段裏面除了有個叫SAN的extensions外,還有其他很多很多extensions。而生成方法都是一樣的,所以接下來的內容都以extensions爲核心加以展開。
2. 如何製作多域名證書
爲了給證書加上extensions字段,我們有兩種方法。 第一、在製作證書的CSR文件時,第二、在CA給CSR簽名的時候.。個人建議採用第一種方法,畢竟我自己的證書需要哪些擴展,我把它放到CSR裏面就好了,沒必要CA參與進來。
在利用openssl給證書加上一些extensions字段時,會有三個section供更改[v3_req],[v3_ca],[usr_cert],使用的場景如下。
(1)如果要在製作第三方簽發的證書CSR時,加入extensions, 修改openssl.cnf文件裏面section [v3_req].
(2)如果要在製作自簽發的證書CSR時,加入extensions, 修改openssl.cnf文件裏面section [v3_ca]
(3)如果在需要在CA簽發證書時,加入extensions, 修改openssl.cnf文件裏面section [usr_cert].
本文,我們通過修改申請者的CSR,來增加extensions字段。
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# Add by myself, for SAN
subjectAlternativeName = DNS:Test-ext.cisco.com, IP Address:10.74.97.119
# Add by myself, for KeyUsage
修改完以後,用以下命令生成CSR
openssl req -key Test.key -out Test-ext.csr -new -sha384 -extensions v3_req
修改完以後,用以下命令簽發CSR,形成自簽發證書
或者用以下命令簽發CSR,形成第三方簽發證書