Node.js的TLS/SSL模块详解
来源:互联网 发布:excel无法黏贴数据 编辑:程序博客网 时间:2024/06/05 05:55
第一步:我们自己扮演CA机构,给自己的服务器颁发签名证书,这个证书是CA机构的证书
openssl genrsa -out ca.key 1024//这里是CA生成的私钥,文件名为ca.keyopenssl req -new -key ca.key -out ca.csr//这里是CA通过自己的私钥生成CSR文件,文件名为ca.csropenssl x509 -req -in ca.csr -signkey ca.key -out ca.crt//这里是通过把CA的csr文件用私钥进行签名,最后生成一个证书的过程,证书名字为ca.crt上面产生的文件是扮演CA角色需要的文件
第二步:服务器向CA机构申请签名证书,但是在申请签名证书之前要创建自己的CSR文件,但是这个过程中的Common Name要匹配服务器域名,否则后续认证会报错
openssl genrsa -out server.key 1024//这里是产生了服务器的私钥openssl req -new -key server.key -out server.csr//通过服务器的私钥产生CSR文件openssl x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt//这里为服务器产生了一个得到CA签名的证书,证书名字为server.crt。产生证书需要CA机构的证书文件ca.crt以及CA机构的私钥的参与注意:这里我们很容易注意到我们要产生通过CA认证的证书是需要CA的私钥和CA证书的参与的!客户端发起安全连接之前需要获取服务器端的证书,并通过CA的证书验证服务器端证书的真伪,除了验证真伪以外还需要对服务器的名称,IP地址进行验证。
我们来看看证书中包含什么内容:
这个证书是内置在浏览器中的,我们已经知道证书的格式了,我们再看看证书的验证是怎么样的过程:
很显然,当把证书发送到客户端以后会被发送到CA机构进行认证,如果认证通过才是合法的请求。具体过程如下:
服务器证书的验证->服务器身份的验证
1, 通过https建立一个安全web事务之后,浏览器会自动获取所连服务器的数字证书;
其中服务器证书包括了:
Web站点名称和主机名
Web站点的公钥;
颁发机构的名称;
颁发机构给证书的签名;
2, 若服务器没有证书,则安全连接失败。
3, 浏览器首先检查服务器证书是否还在有效期内,若过期,则提示失效;
4, 浏览器查看服务器证书对应的CA,若该CA是很权威的机构,则浏览器可能已经知道了对应的公钥了(浏览器会预先安装很多签名颁发机构的证书并认为是受信任的),这时,浏览器用CA的数字证书里面的公钥来验证该CA颁发的服务器证书的有效性。类似去公安局验证某人的身份证是否是真的。
5,则浏览器对签名颁发机构CA一无所知,浏览器无法确定是否该信任这个签名颁发机构,它通常会向用户提示一个对话框,看看他是否相信这个签名发布者。
6, 一旦完成了对服务器证书的验证,接下来就可以使用服务器证书里面的公钥进行服务器身份的验证;
7, 客户端生成一个随机数给到服务器,要求对应的服务用对应服务器证书是私钥进行签名。
8, 服务器对随机数进行签名,并回传给到客户端。
9, 客户端用服务器证书的公钥对随机数的签名进行验证,若验证通过,则说明对应的服务器确实拥有对应服务器证书的私钥,因此判断服务器的身份正常。否则,则任务服务器身份被伪造。
- Node.js的TLS/SSL模块详解
- Node.JS、Socket.IO 的 SSL/TLS 双向认证笔记
- Node.Js TLS(SSL) HTTPS双向验证
- node.js的request模块详解
- TLS/SSL 协议详解 (28) TLS 1.0、TLS 1.1、TLS 1.2之间的区别
- SSL/TLS 协议详解
- SSL/TLS 协议详解
- SSL/TLS 协议详解
- TLS和SSL详解
- SSL/TLS协议详解
- SSL/TLS 协议详解
- SSL/TLS 协议详解
- SSL/TLS原理详解
- SSL&TLS详解
- SSL/TLS原理详解
- SSL/TLS原理详解
- SSL/TLS 协议详解
- SSL/TLS 协议详解
- maven
- 虚幻4 字符串char utf8转换
- JS常用的兼容方法
- Eclipse断点调试
- java学习第一步 sublime环境配置
- Node.js的TLS/SSL模块详解
- Software Quality and Testing in MySQL
- Java String、StringBuffer、StringBuilder深度剖析
- 第七章案例分析
- JavaScript之RegExp(正则表达式)
- Extjs5 使用Charts
- JS时间板运动框架(Twnne)
- 单例设计模式——小单例有大秘密
- 【前端福利】用grunt搭建自动化的web前端开发环境-完整教程