我为我的开发环境设置了一个小型的自签名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错误?