最近为客户解决outlook证书不信任弹窗问题,尝试发现是outlook对证书的有效域名做了校验。为了方便起见,需要一张证书能支持不同的域名(如smtp.qq.com,smtp.exmail.qq.com等)。
查阅资料,证书可以支持多个域名,前提满足。证书生成采用的openssl,版本:1.1。
openssl网上可以下载到源码,在windows下编译很麻烦,反正我是没编译成功,直接下载的安装包。
使用openssl生成多域名证书使用配置文件,在openssl安装目录下bin\cnf 中有配置模板。用openssl.cnf就可以。
对模板文件做以下修改:
(图片上传不了,只能用文字说明了)
找到 # req_extensions = v3_req 处取消注释(# 是注释标识)
找到标识[ v3_req ],在其中添加subjectAltName 项。
如:
subjectAltName = @alt_names
[alt_names]
DNS.1 = smtp.qq.com
DNS.2 = smtp.exmail.qq.com
后续可以继续控制DNS.3、DNS.4等如此
下面这个博客连接对配置项和证书生成指令说明比较详细,也较容易看懂,这里就不在描述具体生成步骤了
https://blog.csdn.net/u013066244/article/details/78725842/
PS:生成证书后,有一个安装过程,windows下微软提供了一个certmgr.exe工具,下载windowssdk会带着有。工具本身可以单独使用,没什么依赖项,使用此工具可以用参数静默安装证书。
安装证书到【受信任的根证书颁发机构】全用户可用示例:
certmgr.exe -add -c {证书} -s -r localMachine AuthRoot
certmgr.exe -add -c "d:\certTest\cert.crt" -s -r localMachine AuthRoot