https认证

阅读: 评论:0

https认证

https认证

关于HTTPS

HTTPS是在HTTP基础上实现的一种更安全的身份认证及数据传输协议.百度百科的解释是这样的:

HTTPS (全称:Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL

上面的定义说明了HTTPS的实现基础是ssl,但在整个认证过程中还有一个重要的权威机构CA(Certificate Authority),先来看看这个CA.

关于CA

电子商务认证授权机构(CA, Certificate Authority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任.

这个机构主要就是为网络服务器颁发证书,使网络服务器在互联网中可信.建立这种信任关系的是各个机构的根证书,根证书可以对他们签名的所有服务器进行验证.要得到这种证书需要到对应的机提交申请.对于要求不高的情况下可以使用 Let’s encrypt.

SSL协议

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持.SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装,压缩,加密等基本功能的支持.SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等.

SSL Handshake Protocol握手过程中身份认证和秘钥协商步骤

  1. 客户端(浏览器)发送自己的ssl版本号,支持的算法等信息到服务器
  2. 服务端返回自己的ssl版本号,随机数及服务器的证书
  3. 客户端验证server的证书是否合法,验证不通过给出提示
  4. 验证通过客户端会发送自己的证书给服务器,交由服务器认证
  5. 服务器验证客户端证书,如果验证不同通过,会直接断掉链接
  6. 验证通过,将选好的加密方案通过客户端的公钥加密返回给客户端
  7. 客户端通过私钥解开加密方式,生成随机数,作为对称加密的秘钥,使用服务器的公钥加密发送给服务器
  8. 服务器通过私钥解密出对称机密的秘钥
  9. 开始安全数据传输工作

上面几个步骤成功后之后,就建立了一个双向的认证(单向认证没有上面4和5)的安全的数据传输通道,接下来看一下如何使用openssl来建立自签名的双向认证

openssl自签名双向认证
  1. 获取CA证书

    
    #生成ca私钥文件,长度为1024加密方式为rsaopenssl genrsa -out ca.key 1024#采用x509标准生成自签名证书openssl req -new -x509 -days 36500 -key ca.key - -subj "/C=CN/ST=SX/L=XA/O=Team/OU=sun"
    
  2. 获取server端证书

    
    #生成server秘钥文件openssl genrsa -out server.key 1024#生成证书请求文件openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=SX/L=XA/O=Team/OU=test/CN=aa"#生成server CA自签名证书openssl ca -in server.csr - - -keyfile ca.key#验证server端证书docker@myvm2:~$ openssl verify -  
    : OK
    
  3. 获取client端证书

     #阿道夫openssl genrsa -out client.key 1024#阿道夫openssl req -new -key client.key -out client.csr -subj "/C=CN/ST=SX/L=XA/O=Team/OU=test/CN=aa"#openssl ca -in client.csr - - -keyfile ca.key这步会出错:unable to access the ./demoCA/newcerts directory ./demoCA/newcerts: No such file or directory解决办法:mkdir -p ./demoCA/newcertstouch uch demoCA/serialecho 01 > demoCA/serial#验证
    docker@myvm2:~$ openssl verify -  
    : OK
    
  4. 使用openssl 验证

     #开启server端证书验证功能docker@myvm2:~$ openssl s_server -accept 10086 -key server.key - -Verify 5verify depth is 5, must return a certificateUsing default temp DH parametersACCEPT#新开一个窗口执行客户端链接命令,带上客户端的证书,否则server会自动断掉链接docker@myvm2:~$  openssl s_client -connect localhost:10086 -  - -key client_key

本文发布于:2024-01-30 18:01:46,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170660891021830.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:https
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23