ssl - CSR 是如何编码的?

标签 ssl x509 csr

我正在学习 TLS 协议(protocol),但我不喜欢任何时刻。创造企业社会责任的时刻。为什么要编码?它使用什么编码?最大的问题是“为什么 CSR 创建命令需要私钥?”这不是安全漏洞吗?

典型的命令是:

openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privatekey.key

其中“CSR.csr”是 CSR 请求,“privatekey.key”是我的私钥。

我在 Google 中找到的只是“它是出于实际原因而设计的”。什么原因? 非常可疑的是,我对公钥发布的请求需要我的私钥进行无用的 CSR 编码,该编码仅包含我的数据和公钥,并且每个人都可以解码。这也太可疑了吧。我认为这个漏洞是为了证书颁发机构在解码过程中以某种方式获取私钥并将其提供给一些感兴趣的人。

最佳答案

Why is it encoded?

嗯,它是根据公钥加密标准 (PKCS) 进行编码的。对于 CSR,可以使用两种标准:PKCS#10(单个请求)或封装的 PKCS#7,其中包含嵌入式 PKCS#10 请求和附加信息(例如,外部签名、续订证书)。 X.509 标准系列使用 ASN.1 DER(可分辨编码规则)编码将结构转换为字节流。编码仅用于表示层,易于通过线路操作和连接。

Why a CSR-creating command requires a private key

私钥不包含在请求中,它用于对请求进行数字签名。此步骤对于 CA 确保请求在 CSR 创建和提交之间未被篡改/修改是必要的。所以这不是安全漏洞。请求中仅包含公钥。从公钥推导出私钥几乎是不可能的。

关于ssl - CSR 是如何编码的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48489231/

相关文章:

kubernetes - 已批准 Kubernetes CSR,但证书未显示在状态中

java - 从头开始重新创建Java keystore (JKS)

ajax - 保护 AJAX 应用程序的最佳方式

java - 为 SSL 通信创建证书

ssl - OpenSSL:如何提供指向证书验证回调的自定义指针

java - 在 xws-security for Spring-WS 中支持 X509PKIPathv1

ssl - 在 CSR 中添加扩展以生成中间证书

c# - 如何让 System.Web.HttpWebRequest 对象使用 SSL 2.0?

java - 忽略过期的 ssl 证书

ssl - 如何在 SSL 中验证服务器证书?