有時(shí)候我們需要使用多域名證書(shū),比如Exchange Server的服務(wù)它是只能使用一個(gè)證書(shū)的,當(dāng)它為多個(gè)域名提供郵件服務(wù)的時(shí)候,這個(gè)證書(shū)就需要是多域名的,不然證書(shū)沒(méi)包含的域名的用戶連接服務(wù)器的時(shí)候會(huì)報(bào)證書(shū)域名不符的安全警告。

圖1. 證書(shū)域名不符警告
直接在證書(shū)提供商網(wǎng)站生成的證書(shū)是不能用在IIS和Exchange Server的,因?yàn)樗狈λ借€。即使證書(shū)導(dǎo)入了IIS,它也會(huì)很快消失。
對(duì)于單域名的情況,只需要我們?cè)诒镜厣勺C書(shū)申請(qǐng)文件就可以了,使用IIS或者Exchange Server生成證書(shū)生成請(qǐng)求,如下文所示即可:
解決GoDaddy SSL證書(shū)導(dǎo)入IIS后消失的問(wèn)題 - 簡(jiǎn)書(shū)
然而對(duì)于多域名的情況,方法不同,使用如下辦法:
- 在需要安裝證書(shū)的電腦上,使用記事本,輸入如下內(nèi)容(記得主域名和結(jié)尾多域名處改成自己的內(nèi)容,注意最后一個(gè)域名結(jié)尾沒(méi)有
&符號(hào))然后以ANSI編碼保存成request.inf文件
[Version]
Signature="$Windows NT$"
[NewRequest]
; 核心設(shè)置(Core settings)
Subject = "CN=mydomain.com" ; 主域名 (Primary domain)
KeySpec = 1
KeyLength = 2048
Exportable = TRUE ; 指定私鑰可導(dǎo)出 (Make private key exportable)
MachineKeySet = TRUE ; 私鑰保存在計(jì)算機(jī)密鑰庫(kù) (Store key in machine key store)
SMIME = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
HashAlgorithm = sha256
[Extensions]
; 多域名擴(kuò)展:請(qǐng)根據(jù)需要添加更多 DNS 別名 (Subject Alternative Name, SAN)
2.5.29.17 = "{text}"
_continue_ = "dns=mail.a.com&"
_continue_ = "dns=mail.b.org&"
_continue_ = "dns=mail.c.com&"
_continue_ = "dns=mail.d.com"
- 以管理員權(quán)限運(yùn)行命令提示符或者PowerShell,切換到上述文件保存的路徑,運(yùn)行命令:
certreq -new request.inf request.csr
這時(shí)候會(huì)在該目錄下生成request.csr文件。
- 使用上面生成的CSR文件的內(nèi)容到證書(shū)提供商處生成新的證書(shū),下載生成的證書(shū)后,會(huì)取得一個(gè)證書(shū)提供商提供的cer或者crt文件,將之放置到剛才我們生成CSR文件相同的目錄下,切換到第二步用過(guò)的命令行環(huán)境,運(yùn)行如下命令來(lái)安裝證書(shū):
certreq -accept cert_file_name.crt
如果命令幾秒后無(wú)錯(cuò)誤地完成了,那么證明成功了,在Exchange Server或者IIS里應(yīng)該能看到這個(gè)證書(shū)了。
- 以管理員權(quán)限運(yùn)行
certlm.msc,默認(rèn)的證書(shū)安裝路徑在Personal->Certificates下面,找到它,如下圖所示的證書(shū)圖標(biāo)左上角帶一把小鑰匙圖標(biāo)的這種,就是帶私鑰的證書(shū)了。
圖2. 帶私鑰的證書(shū)圖標(biāo)示例
點(diǎn)右鍵按提示就可以導(dǎo)出帶私鑰的PFX格式的證書(shū)了,這種格式的證書(shū)就可以到處安裝了,不過(guò)注意安全,并不主張導(dǎo)出私鑰。
