数字证书 & CSR & OpenSSL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字证书 & CSR & OpenSSL相关的知识,希望对你有一定的参考价值。

参考技术A

Openssl的证书操作
Why do I have to create a certificate request (CSR) from the private key?
什么是CSR文件
SSL证书请求文件(CSR)生成指南
什么是CSR ? 什么是公钥和私钥?
Where in the CSR is the public key?
openssl、x509、crt、cer、key、csr、ssl、tls 这些都是什么鬼?
How to create a .pem file for SSL Certificate Installations
OpenSSL生成根证书CA及签发子证书

CSR Certificate Signing Request,证书签名请求,即申请者通过将公钥发送给 CA,Certificate Authority, 来申请数字签名证书的请求。发送的文件叫做 CSR 文件。

In public key infrastructure (PKI) systems, a certificate signing request (also CSR or certification request ) is a message sent from an applicant to a registration authority of the public key infrastructure in order to apply for a digital identity certificate .

有了数字签名证书,我们即可证明自己是可信的,CA 会为此背书。

申请者向 CA 申请数据证书,首先需要自己先产生一对公私密钥。申请者保管好私钥,再把公钥和申请者信息发送给 CA,CA 通过这个公钥和申请者信息签发数字证书。

CSR 文件就是包含了申请者公钥和申请者信息的数据文件。申请者产出这个 CSR 文件,发送给 CA,CA 会根据 CSR 文件中的内容签发数字证书。

要产生 CSR 文件的方法有很多,比较常用的是 OpenSSL。

也可以通过 CA 机构在线生成 CSR(不推荐,因为暴露了密钥对)。

使用 RSA 算法,私钥输出到 private.key 文件。

使用私钥 private.key 生成 CSR 文件 server.csr
这里需要填写申请者信息。 要注意的是 Common Name 这里,要填写成使用 SSL 证书(即:HTTPS 协议)的域名或主机名,否则浏览器会认为不安全。例如:如果以后打算用 https://dummy.example.com/xxx 这里就填写 dummy.example.com 。

完成上面的两个步骤后,公钥会同时出现在 server.csr 和 private.key 文件中。

我们将 CSR 文件提交给 CA 申请证书,经过 CA 身份对申请者身份进行审核后,使用 CA 的私钥来给签名,生成证书。

CA 签名算法工作流程大致如下:一般是对信息做一个 Hash 计算,得到一个 Hash 值,这个过程不可逆,也就是说无法通过 Hash 值得出原来的信息内容。再把信息发送出去时,把这个 Hash 值用 CA 私钥加密后,作为一个签名和信息一起发出去。

CA 有自己的证书 crt 文件,这个 CA 自己的证书(证明自己是可信的),由更高级别的 CA 给它颁发的。

申请人收到证书文件后,将证书公钥配合私钥文件转化为服务器对应的格式的文件,部署在 HTTP 服务器上面,这样我们的网站就可信了。

未来任何人都从服务端获取这个证书,而不是公钥。你需要得到这个证书的发布机构 CA 的公钥,来解密这个证书的签名,如果解密成功了,Hash 也对得上,就说明这个证书中自带的公钥没什么问题。

OpenSSL Heartbleed 心脏出血漏洞

以上是关于数字证书 & CSR & OpenSSL的主要内容,如果未能解决你的问题,请参考以下文章

CSR8670项目实战:BlueAgBatC蓝牙发射器&BLE遥控器

CSR8670项目实战:BlueAgBatC蓝牙发射器&BLE遥控器

CSR8670项目实战:BlueAgBatC蓝牙发射器&BLE遥控器

相互SSL身份验证 - 客户端和服务器端。 Python - > Django / Twisted / Tornado

使用Openssl生成自签名证书

(原)thinkjs使用腾讯云https证书