Domino AppDev Pack 1.0.13部署IAM服务自签CA签名证书失败
报错原因
命令中<(printf "[SAN]\nsubjectAltName=DNS:iamserver.com")属于Bash/Zsh等类Unix Shell独有的进程替换语法,Windows原生CMD、PowerShell环境不支持该语法,会直接把这段字符串当作不存在的文件路径传递给openssl的-extfile参数,触发「系统找不到指定的文件」错误。
如果你是在Git Bash/WSL等模拟类Unix环境执行命令仍报错,是因为当前调用的openssl为Windows原生版本,无法识别进程替换生成的虚拟文件路径。
解决方法
不要使用进程替换传参,提前创建静态扩展配置文件再执行签名,步骤如下:
- 在当前命令执行目录下新建名为
san.cnf的配置文件,写入以下内容:
[SAN] subjectAltName=DNS:iamserver.com,DNS:serv.org.com
提示:你的本地服务域名为serv.org.com,建议一并加入SAN列表,否则后续会出现证书域名不匹配的鉴权错误
- 执行修改后的签名命令,直接指定静态配置文件路径:
openssl x509 -passin pass:passw0rd -req -days 365 -in iamserver.csr -CA ca.crt -CAkey ca.key -out iamserver.crt -CAcreateserial -CAserial ca.seq -sha256 -extfile san.cnf -extensions SAN
验证方式
证书生成后执行以下命令,若输出中包含你配置的所有DNS域名,说明SAN扩展已正确写入:
- Windows环境执行:
openssl x509 -in iamserver.crt -noout -text | findstr /C:"Subject Alternative Name" /A:2
- 类Unix/Linux环境执行:
openssl x509 -in iamserver.crt -noout -text | grep -A 2 "Subject Alternative Name"
注意:你之前执行成功的无SAN参数的签名命令生成的证书,仅靠CN字段标识服务域名,现代浏览器、多数服务鉴权组件已经不再信任这类无SAN字段的证书,必须添加SAN扩展才能正常使用。
内容的提问来源于stack exchange,提问作者Cora.Kn.Kwok
相关产品推荐
相关产品推荐

