如何为 ServerHello 构建证书链

如何为 ServerHello 构建证书链

我一直在尝试整理证书链。我有已提交给证书颁发机构/CA 的私钥 ( privatekey.pem) 和 CSR ( )。csr.pem

我获取了 CA 的证书,并将内容放入一个文件 ( ca.crt)。文件ca.crt以一行开头-----BEGIN CERTIFICATE-----,然后是经过哈希处理的内容。不过,我仍然需要证书链,请查看此处的证书链示例http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html#SampleCert

我假设我拥有的是privatekey.pem根证书(对吗?),并且ca.crt是该链接中示例链中的中间证书 1。如果是这样,我如何/在哪里获取另一个中间证书?如果我误解了这一点,我该如何获取/生成订单?

答案1

你似乎混淆了几个方面。要获得最终结果,你需要的是

  1. 你的私钥
  2. 根证书,对于使用相同 CA 的每个人来说都是平等的(您的 ca.crt 似乎就是这样)
  3. 一些中间证书,通常在 CA 的网站上找到
  4. 提交的 CSR 的结果,即您的证书。

2-4组成证书链。

答案2

Adron,

privatekey.pem 是您从 CA 请求的证书的私钥。

根 CA 证书将是颁发您的证书的特定 PKI 顶层的证书,并且将是自签名证书。

中间 CA 证书来自根 CA 下方的子 CA。

例如 example.com 有一个名为 exampleRootCA 的根 CA 和一个名为 exampleSubCA 的子 CA。

exampleSubCA 向您颁发 SSL 证书 AdronSSL

您的证书链将是 AdronSSL -> exampleSubCA -> exampleRootCA

希望这可以帮助

答案3

下面的命令 1-5 有助于创建证书链

  1. 创建 RootCA 的私钥和自签名证书的命令

    openssl req -new -nodes -newkey rsa:2048 -sha256 -days 100 -keyout rootPrivateKey.key -x509 -out rootCACertificate.pem

注意:将 RootCA 证书从 .crt 格式转换为 .pem 格式的命令

openssl x509 -outform pem -in rootCACertificate.pem -out rootCACertificate.crt
  1. 创建中级 CA 的私钥及其证书签名请求的命令

    openssl req -new -nodes -newkey rsa:2048 -keyout middleCAPrivateKey.key -out middleCACertificateSignRequest.csr

  2. 创建由 RootCA 签名的中级 CA 证书的命令

    openssl x509 -req -sha256 -days 100 -in 中间CACertificateSignRequest.csr -CA rootCACertificate.pem -CAkey rootPrivateKey.key -CAcreateserial -extfile domain.ext -out 中间CACertificate.crt

domain.ext 的内容如下:

subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
  1. 创建服务器私钥并签名请求的命令

    openssl req -new -nodes -newkey rsa:2048 -keyout serverPrivateKey.key -out serverSignRequest.csr

  2. 创建由 IntermediateCA 签名的服务器证书的命令

    openssl x509 -req -sha256 -days 100 -in serverSignRequest.csr -CA middleCACertificate.crt -CAkey middleCAPrivateKey.key -CAcreateserial -extfile domain.ext -out serverCertificate.crt

domain.ext 的内容如下:

basicConstraints = CA:FALSE keyUsage = nonRepudiation、digitalSignature、keyEncipherment subjectAltName = @alt_names [ alt_names ] DNS.1 = localhost

注意:命令将服务器的私钥从 .key 格式转换为 .PEM 格式。

openssl rsa -in serverPrivateKey.key -out serverPrivateKey.pem

这里的根 CA 是自签名的。因此浏览器无法识别它。为了确保浏览器能够识别它,请打开 IE ->工具->Internet 选项 -> 内容 -> 在受信任的证书颁发机构部分导入根 CA,并在中级证书颁发机构部分导入中级 CA。

服务器证书和服务器的私钥保存在您运行的提供网页的服务器中。

请求网页后,你会发现服务器证书已根据证书链进行验证

相关内容