如何在使用openssl生成自签名证书时添加扩展密钥用法string

我在Mac OS X 10.9上使用openssl为Windows Server Remote Desktop Services生成自签名证书。

使用下面的命令我可以生成证书,

openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt 

但是,我需要添加一个扩展的密钥用法string服务器authentication(1.3.6.1.5.5.7.3.1) ,我不知道如何在上面的命令。

我曾尝试使用openssl选项-extfile与包含此文件,

 [= default ] extendedKeyUsage = 1.3.6.1.5.5.7.3.1 

但是,我得到一个错误,“-extfile选项未find”

虽然openssl x509使用-extfile ,但是您正在使用的命令openssl req需要使用-config来指定configuration文件。

所以,你可以使用这样的命令:

 openssl req -x509 -config cert_config -extensions 'my server exts' -nodes \ -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt 

在默认configuration文件(可能是OS X上的/System/Library/OpenSSL/openssl.cnf )中定义了常用的专有名称位提示,但是在使用-config时不会处理此文件,因此您的configuration文件还必须包含一些DN位。 因此,上面提到的cert_config可能看起来像这样:

 [ req ] prompt = no distinguished_name = my dn [ my dn ] # The bare minimum is probably a commonName commonName = secure.example.com countryName = XX localityName = Fun Land organizationName = MyCo LLC LTD INC (dba OurCo) organizationalUnitName = SSL Dept. stateOrProvinceName = YY emailAddress = [email protected] name = John Doe surname = Doe givenName = John initials = JXD dnQualifier = some [ my server exts ] extendedKeyUsage = 1.3.6.1.5.5.7.3.1 # 1.3.6.1.5.5.7.3.1 can also be spelled serverAuth: # extendedKeyUsage = serverAuth # see x509v3_config for other extensions 

正如在评论中指出的,你可能会遗漏大部分的DN域。 对于HTTPS的使用,我认为你所需要的只是一个与你的主机名匹配的CN。


req(1)的可分辨名称和属性部分格式部分显示如果您想要生成多个类似的证书/请求,您可以如何修改上述configuration以提示值(并提供默认值)。

如果您需要其他证书扩展名,请检查x509v3_config(5)了解可以在扩展部分中指定的其他位。