Openssl x509v3扩展密钥使用



我知道您可以通过在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

谢谢!

你只能这样使用:

openssl -extensions mysection -config myconfig.cnf

和myconfig.cnf:

[mysection]
keyUsage         = digitalSignature
extendedKeyUsage = codeSigning

我不知道这个功能的命令行接口

您可以尝试add:

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

我最终做的是创建几个不同的openssl.cfg文件,并通过使用-config-extfile开关引用适当的文件。

与处理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.comnextendedKeyUsage=serverAuth,clientAuth"))

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'

使用最新版本的OpenSSL,您可以使用-addext选项添加扩展密钥使用

对于您的特定情况,它应该看起来像:

openssl req -newkey rsa:4096                           
            -addext "extendedKeyUsage = serverAuth, clientAuth" 
            -keyform PEM 
            -keyout server-key.pem 
            -out server-req.csr 
            -outform PEM

您可以验证输出:

openssl req -noout -text  -in server-req.csr

更常见的用例是还设置主题键用法

同例:

openssl req -newkey rsa:4096 
            -subj '/CN=My Name' 
            -addext "keyUsage = digitalSignature,keyAgreement" 
            -addext "extendedKeyUsage = serverAuth, clientAuth" 
            -keyform PEM 
            -keyout server-key.pem 
            -out server-req.csr 
            -outform PEM

最新更新