Google正试图使用SHA1哈希算法逐步淘汰使用SSL证书。因此,我想创建一个符合SHA2标准的自签名证书。我知道SHA是一种散列算法,而RSA是一种加密算法。我找到了以下用于生成密钥和证书对的命令:
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
这会使用SHA-2哈希算法生成证书吗?
部署证书后,Chrome会报告以下内容:
答案 0 :(得分:2)
证书颁发者用于签署证书请求的哈希算法与证书请求本身无关。这意味着CA可能会将SHA-2用于2048位密钥,但它也可能使用SHA-1。它甚至可能重新签署曾经使用SHA-1签署的SHA-1相同的证书。 目前大多数(全部?)公共CA使用SHA-2,因为出于安全原因,SHA-1被逐步淘汰。
在您的情况下,您使用openssl req
命令不仅创建证书请求,还要对其进行签名,即创建自签名证书。现代版本的openssl
将默认使用SHA-2签署此新证书,旧版本为SHA-1。要强制使用SHA-2作为签名算法,请使用-sha256
参数。
答案 1 :(得分:2)
我相信我已经解决了这个问题。我一直使用的命令使用openssl的默认哈希算法SHA-1。要创建SHA-2哈希证书,必须指定SHA-2选项。在这种情况下,我选择使用SHA-256。以下是更新的命令:
openssl req -newkey rsa:2048 -sha256 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem