生成 CSR 时无法在配置中找到“distinguished_name”

问题描述

我想用 SAN 部分生成 CSR 并不断收到以下错误unable to find 'distinguished_name' in config

据我所知,cnf 结构合理,也被调用。注意到 CN 值与 SAN 不匹配并且是我的组织强制要求的。

这是我的 cnf 文件内容

[me@server-5007749 ~]$ cat openssl.cnf
[ req ]
distinguished_name = req_distinguished_name
req_extensions     = req_ext
[ req_distinguished_name ]
C = CA
0.OU = SSL
1.OU = Device
O = MyOrg
CN = 43546323
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = my_fqdn_here.ca

这是我的 shell 脚本的内容,其中包含创建 CSR 的命令:

[me@server-5007749 ~]$ cat ssl.sh
export OPENSSL_CONF=/home/me
printenv OPENSSL_CONF
openssl req -new -key /opt/rh/httpd24/root/etc/httpd/certs/private.key -out site_csr.csr

这是我的 shell 脚本的输出

[me@server-5007749 ~]$ ./ssl.sh
/home/me
unable to find 'distinguished_name' in config
problems making Certificate Request
140524933736336:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_lib.c:324:group=req name=distinguished_name

编辑 #1

我尝试了几个不同的 OpenSSL 版本,认为我可能会得到更好的结果:

  • OpenSSL 1.0.2k-fips 2017 年 1 月 26 日(RHEL 认)
  • OpenSSL 1.1.1f 2020 年 3 月 31 日(Cygwin)

解决方法

OPENSSL_CONF 用于指定配置文件的位置。 试试这个

export OPENSSL_CONF=/home/me/openssl.cnf