生成IIS、Exchange支持的多域名证书
2025-03-20 本文已影响0人
达哥傻乐
有时候我们需要使用多域名证书,比如Exchange Server的服务它是只能使用一个证书的,当它为多个域名提供邮件服务的时候,这个证书就需要是多域名的,不然证书没包含的域名的用户连接服务器的时候会报证书域名不符的安全警告。
图1. 证书域名不符警告
直接在证书提供商网站生成的证书是不能用在IIS和Exchange Server的,因为它缺乏私钥。即使证书导入了IIS,它也会很快消失。
对于单域名的情况,只需要我们在本地生成证书申请文件就可以了,使用IIS或者Exchange Server生成证书生成请求,如下文所示即可:
解决GoDaddy SSL证书导入IIS后消失的问题 - 简书
然而对于多域名的情况,方法不同,使用如下办法:
- 在需要安装证书的电脑上,使用记事本,输入如下内容(记得主域名和结尾多域名处改成自己的内容,注意最后一个域名结尾没有
&符号)然后以ANSI编码保存成request.inf文件
[Version]
Signature="$Windows NT$"
[NewRequest]
; 核心设置(Core settings)
Subject = "CN=mydomain.com" ; 主域名 (Primary domain)
KeySpec = 1
KeyLength = 2048
Exportable = TRUE ; 指定私钥可导出 (Make private key exportable)
MachineKeySet = TRUE ; 私钥保存在计算机密钥库 (Store key in machine key store)
SMIME = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
HashAlgorithm = sha256
[Extensions]
; 多域名扩展:请根据需要添加更多 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"
- 以管理员权限运行命令提示符或者PowerShell,切换到上述文件保存的路径,运行命令:
certreq -new request.inf request.csr
这时候会在该目录下生成request.csr文件。
- 使用上面生成的CSR文件的内容到证书提供商处生成新的证书,下载生成的证书后,会取得一个证书提供商提供的cer或者crt文件,将之放置到刚才我们生成CSR文件相同的目录下,切换到第二步用过的命令行环境,运行如下命令来安装证书:
certreq -accept cert_file_name.crt
如果命令几秒后无错误地完成了,那么证明成功了,在Exchange Server或者IIS里应该能看到这个证书了。
- 以管理员权限运行
certlm.msc,默认的证书安装路径在Personal->Certificates下面,找到它,如下图所示的证书图标左上角带一把小钥匙图标的这种,就是带私钥的证书了。
图2. 带私钥的证书图标示例
点右键按提示就可以导出带私钥的PFX格式的证书了,这种格式的证书就可以到处安装了,不过注意安全,并不主张导出私钥。