openssl - 比较 *.csr 和 *.pem 文件是否匹配

标签 openssl ssl-certificate pki

由于我不熟悉生成 key 和证书,所以当时我需要做一些测试。现在我觉得某一对可能混淆了。

我有一个 RSA 私钥文件:

-----BEGIN RSA PRIVATE KEY-----
             ...
-----END RSA PRIVATE KEY-----

并将证书签名请求文件发送给对方:

-----BEGIN CERTIFICATE REQUEST-----
              ...
-----END CERTIFICATE REQUEST-----

在尝试检查匹配时,根据在网络上找到的信息,可能值得注意的是以下内容:

openssl x509 -noout -modulus -in cert.csr | openssl md5

出现以下错误:

unable to load certificate
4980:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:650:Expecting: TRUSTED CERTIFICATE

虽然它仍然给我和 md5 哈希值。对私钥运行类似的命令会生成另一个 md5。由于这些不匹配,我现在可以假设 csr 不是从 key 生成的吗?

我能够使用以下命令检查 csr 中存储的值:

openssl req -in cert.csr -noout -text

我尝试生成一个具有相同值的新值。这并没有给我完全相同的结果 - 只有前三行是相同的。

有没有办法检查 csr 和 pem 文件是否真正匹配或是否存在混淆?

最佳答案

在Linux机器中运行这些命令并验证它们的md5值是否相等。

$ openssl rsa -noout -modulus -in key.pem | openssl md5
$ openssl req -noout -modulus -in key.csr | openssl md5
$ openssl x509 -noout -modulus -in key.crt | openssl md5

关于openssl - 比较 *.csr 和 *.pem 文件是否匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23546462/

相关文章:

php - React SecureServer 运行但在浏览器中抛出 SSL_ERROR_NO_CYPHER_OVERLAP

azure - 使用应用程序网关相互身份验证服务器变量在 APIM 上进行客户端证书验证

hyperledger-fabric - Hyperledger 具有与 Fabric CA 不同的 PKI

ssl-certificate - 如何检查crl文件的到期日期

ios - 减小 OpenSSL 二进制文件的大小?

android - 在 Android 中使用 OpenSSL 的 AES-256 CBC 加密/解密字符串

curl - libcurl 可以将 tpm2-tss-engine 用于 TLS 连接吗?

nginx - 对Kubernetes Nginx-ingress使用HTTPS

python - AppEngine urlfetch validate_certificate=False/None 不被尊重

ssl - 什么是 CA 证书,我们为什么需要它?