Openssl x509v3扩展密钥用法

Dav*_*ssy 33 openssl x509certificate

我知道您可以通过在openssl.cfg文件中添加类似这样的行来指定证书公钥可用于的目的:

extendedKeyUsage=serverAuth,clientAuth
Run Code Online (Sandbox Code Playgroud)

但是由于我有几个要创建的证书,每个都有不同的扩展密钥用法,是否可以在命令行中指定我需要的属性(不使用openssl.cfg文件)?就像是:

openssl req -newkey rsa:4096 \
            -extendedKeyUsage "serverAuth,clientAuth" \
            -keyform PEM \
            -keyout server-key.pem \
            -out server-req.csr \
            -outform PEM
Run Code Online (Sandbox Code Playgroud)

谢谢!

pat*_*eno 31

你只能使用这样的东西:

openssl -extensions mysection -config myconfig.cnf
Run Code Online (Sandbox Code Playgroud)

和myconfig.cnf:

[mysection]
keyUsage         = digitalSignature
extendedKeyUsage = codeSigning
Run Code Online (Sandbox Code Playgroud)

我不知道这个功能的命令行界面.

  • 我明白了:`无法在config`中找到'distinguished_name' (2认同)
  • @MarinosAn,给定的配置仅包含与问题相关的部分。您可能还需要提供一些额外的参数。这超出了原始问题的范围。 (2认同)

Dav*_*ssy 11

我最终做的是创建几个不同的openssl.cfg文件,并使用-config-extfile开关引用正确的文件.

  • 你可能想"接受"你自己的答案(所以它不再显示为未回答的问题) (6认同)

Mik*_*Twc 11

你可以试试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
Run Code Online (Sandbox Code Playgroud)

适用于 openssl 1.1.1a


fat*_*son 5

与处理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"))