带有扩展名的OpenSSL签名请求


8

我为我的开发环境设置了一个小型的自签名CA。我想创建具有不同属性的许多不同服务器证书。我的方法是为每个服务器创建一个特定的扩展部分。我有一个很大的openssl.cnf,其中包含以下部分:

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld

然后,当我使用创建我的csr时,使用openssl参数-config myCustomOpenssl.cnf -reqexts server0_http。当我查看自己的请求时,openssl req -text -noout -in myrequest.csr一切看起来都很完美。

但是,在我签署请求后,“ X509v3扩展密钥用法”和“ X509v3使用者替代名称”部分消失了。为了解决这个问题,我还-extfile myCustomOpenssl.cnf -reqexts server0_http添加了对的签名调用的参数openssl

那是预期的行为吗?我一直认为,仅CSR文件就足以创建所请求的证书,即包含其所有部分的证书。我的系统现在的工作方式是获得缺少部分的证书。为了获得想要的证书,我必须提供csr文件和我用来创建请求的openssl配置文件中的相应部分。对于我的小型设置而言,这没有问题,但是如果我成为较大的CA,这将变得非常混乱。应该是那样的还是我使用的opensl错误?

Answers:


7

找到了!我描述的是openssl的正常预期行为。默认情况下,自定义扩展名不会复制到证书中。

为了使openssl将请求的扩展名复制到证书,必须指定copy_extensions = copy签名。在香草安装这意味着该线必须被添加到该部分default_CAopenssl.cnf

openssl.cnf(至少)Centos附带的中,该行已作为注释包含在内,并带有警告“谨慎使用”。如果您不小心的话,请求者可能会滥用它来使您签发CA证书。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.