我已阅读有关如何创建本地SSL证书的article。基本步骤如下:1.创建密钥对openssl genrsa -des3 -out applicant.key 2048
2.创建证书签名请求openssl req -new -sha256 -nodes -out applicant.csr -key applicant.key -config someCert.csr.cnf
3.使用ca.key(私钥)和cacert.pem(CA证书)为申请人创建证书openssl x509 -req -in applicant.csr -CA cacert.pem -CAkey ca.key -CAcreateserial -out applicant.crt -days 500 -sha256 -extfile localdomain.v3.ext
我对步骤有一些疑问。a)当我们在步骤1中创建密钥时,它是密钥对还是私钥?b)在步骤2中创建证书签名请求时,我们需要公钥还是私钥?c)从CA创建证书时,为什么同时需要ca私钥和ca证书?我相信ca私钥用于数字签名,但是CA证书的目的是什么?
当我们在步骤1中创建密钥时,它是密钥对还是私钥?
applicant.key
包含公共元素和私有元素。您可以使用openssl rsa -text -nout -in applicant.key
或更基本的形式使用dumpasn1
或类似名称查看它们。
在步骤2中创建证书签名请求时,我们需要公钥还是私钥?
两者您需要公共密钥,因为它将由CA进行认证。使用CSR签名CSR时,您需要私钥,以提供公钥的所有权证明。
从CA创建证书时,为什么同时需要其私钥和ca证书?
再次,两者。您需要私钥才能对证书进行签名。您还需要CA证书,以便CA可以从中提取签名过程中使用的信息。
至少,这是CA证书的主题字段,用作已签名证书的颁发者字段。
另一个示例是CA证书中的AuthorityKeyIdentifier扩展名,其值用作申请人证书中的SubjectKeyIdentfier扩展名。
但是,CA可以自由使用它们所需的任何东西。例如,Microsoft CA将检查CA证书上的到期日期,并且不会向申请人颁发在该日期之后过期的证书(它将截断证书的有效性)。为此,它需要访问CA证书。