我知道您可以通过在 openssl.cfg 文件中添加类似这样的行来指定证书公钥的用途:
extendedKeyUsage=serverAuth,clientAuth
但是由于我有几个要创建的证书,每个都有不同的扩展密钥用法,是否可以在命令行中指定我需要的属性(不使用openssl.cfg文件)?类似的东西:
openssl req -newkey rsa:4096 \
-extendedKeyUsage "serverAuth,clientAuth" \
-keyform PEM \
-keyout server-key.pem \
-out server-req.csr \
-outform PEM
谢谢!
答案 0 :(得分:31)
你只能使用这样的东西:
openssl -extensions mysection -config myconfig.cnf
和myconfig.cnf:
[mysection]
keyUsage = digitalSignature
extendedKeyUsage = codeSigning
我不知道此功能的命令行界面。
答案 1 :(得分:10)
我最终要做的是创建几个不同的openssl.cfg文件,并使用 -config 或 -extfile 开关来引用正确的文件。
答案 2 :(得分:9)
您可以尝试addext:
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt \
-subj '/CN=User1' \
-addext extendedKeyUsage=1.3.6.1.4.1.311.80.1 \
-addext keyUsage=keyEncipherment
在openssl 1.1.1a上工作
答案 3 :(得分:3)
与处理SAN相同
openssl req -subj "/CN=client" -sha256 -new -key client-key.pem -out client.csr\
-reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:example.com,DNS:www.example.com\nextendedKeyUsage=serverAuth,clientAuth"))
答案 4 :(得分:2)
Mike Twc,https://stackoverflow.com/users/7775187/mike-twc绝对正确!不幸的是,没有足够的声誉来将他的答案标记为正确并为他的答案添加了扩展名,所以我写了一个新答案...
您需要使用-addext,但请记住key->value
参数在此处,并且所有值都必须用逗号分隔。
openssl req -x509 -nodes -newkey rsa:4096 -keyout efs.key -out efs.crt -days 36500 -subj '/CN=EFS/O=Company' -addext 'extendedKeyUsage=1.3.6.1.4.1.311.10.3.4,1.3.6.1.4.1.311.10.3.4.1'