是否可以创建仅在主题备用名称属性/扩展中包含识别信息的 PKCS#10 证书请求/X.509 证书?根据X.509 4.1.2.6 主题,对于主体不是 CA 的证书,只要 subjectAltName 至关重要,则主体可以为空。
但是当我使用带有空的 distinguished_name 部分的这个配置文件时:
# request.config
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[ req_distinguished_name ]
[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:[email protected]
和命令
openssl genrsa 1024 > key.pem
openssl req -new -key key.pem -out req.pem -config request.config
OpenSSL 抱怨:
error, no objects specified in config file
problems making Certificate Request
答案1
这对我有用:
test-no-cn.cnf 文件
[req]
default_bits = 4096
encrypt_key = no
default_md = sha256
distinguished_name = req_distinguished_name
req_extensions = v3_req
[ req_distinguished_name ]
[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:[email protected],URI:http://example.com/,IP:192.168.7.1,dirName:dir_sect
[dir_sect]
C=DK
O=My Example Organization
OU=My Example Unit
CN=My Example Name
生成 CSR
openssl req -new -newkey rsa:4096 -nodes -config test-no-cn.cnf -subj "/" -outform pem -out test-no-cn.csr -keyout test-no-cn.key
签署 CSR
openssl x509 -req -days 365 -in test-no-cn.csr -signkey test-no-cn.key -out test-no-cn.crt -outform der -extensions v3_req -extfile test-no-cn.cnf
查看生成的证书
openssl x509 -inform der -in test-no-cn.crt -noout -text
答案2
我也遇到了这个“未指定对象”错误。它针对各个字段显示如下提示:
US []:
我只是按下回车键,因为我已经在 .cnf 文件中设置了这些值。结果我需要再次输入所有值,然后它就成功了。
答案3
问题出prompt = no
在原始配置中。假设openssl req
您打算在配置文件中指定主题条目,并点击初步检查 req.c。
有一个解决方法:删除prompt = no
,改为添加-subj /
到openssl req
命令行。这是一个生成 CSR 和自签名证书的示例脚本:
cat > openssl.cnf <<EOF
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[ req_distinguished_name ]
[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:[email protected]
EOF
openssl req -newkey rsa:2048 -config openssl.cnf -nodes -new -subj "/" \
-out req.csr
openssl req -newkey rsa:2048 -config openssl.cnf -nodes -new -subj "/" \
-x509 -out cert.crt
答案4
似乎您可以从键盘上输入“distinguished_name”组中的任何一个值,而且它工作正常……我的意思是您不需要输入其他值,可以使用它们的默认值(如 openssl.conf 文件中所述)
[ req ]
...
distinguished_name = req_distinguished_name
prompt = no
...
Should work fine.