如何创建 TLS SHA256 证书请求

如何创建 TLS SHA256 证书请求

我们的一个业务合作伙伴要求我们使用 TLS SHA256 证书连接到他们的 API。我不确定如何生成这些请求。我过去曾使用 openssl 创建这些请求,但它使用 SHa1 生成了 SSL 证书。我可以使用 openssl 生成此请求吗?如果不行,我该如何生成他们要求的内容?

我不是这个领域的专家,所以我甚至不知道我的问题是否有意义。

答案1

CSR 哈希和证书哈希不相关

请求和实际证书上的哈希类型彼此无关。

CA 检查 CSR 上的签名。这样,CA 就可以验证 CSR 在传输过程中没有被更改。这就是 CSR 上的签名的全部作用。

没有官方(甚至半官方)的带内方式告诉 CA 您想要什么哈希值。相反,CA 公司可能会运行多个 CA,其中一个专门使用 SHA256。如果您想要 SHA256,那么您可以在该特定的 SHA256-only-CA 的网站上提交您的 CSR。(而不是在他们的 SHA1-CA 的网站上。)

人们通常的理论是这样的:“如果我提交用 SHA1 签名的 CSR,那么我的证书也将用 SHA1 签名。”这通常不被做。(我知道的唯一一家曾经这样做过一段时间的 CA 是 Gandi.net

如何使用 SHA256 签署 CSR
话虽如此,使用-sha256参数通过 SHA256 签署您的 CSR,如下所示:

openssl req -new -newkey rsa:2048 -nodes -sha256 -out www.example.com.sha256.csr -keyout www.example.com.key -subj "/C=US/ST=ExampleState/L=ExampleLocation/O=ExampleOrganisation/CN=www.example.com"

如何检查 CSR 的哈希类型
以下是找出 CSR 哈希类型的方法:

$ openssl req -in www.example.com.sha256.csr -noout -text | grep Signature  
    Signature Algorithm: sha256WithRSAEncryption

很好。它正如我们想要的那样使用了 SHA256。

答案2

如果您使用 OpenSSL,您只需添加-sha256命令行选项,它将使用 SHA-256 签名算法生成 CSR。

相关内容