【openssl命令、https 、http理解、公钥、私钥、CA证书】

openssl命令、https 、http理解、公钥、私钥、CA证书

附上代码

#!/bin/bash  
  
# 生成随机文件  
filename="fake_file.txt"  
echo "This is a fake file." > "$filename"  
  
# 生成RSA密钥对  
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048  
openssl rsa -pubout -in private_key.pem -out public_key.pem  
  
# 使用私钥对文件进行签名  
signature_file="signature.pem"  
openssl dgst -sha1 -sign private_key.pem -out "$signature_file" "$filename"  
  
# 验证签名  
RE=$(openssl dgst -verify public_key.pem -sha1 -signature "$signature_file" "$filename") >/dev/null 2>&1  
  
# 检查验证结果  
if [ $? -eq 0 ]; then  
    echo "签名验证成功!"  
else  
    echo "签名验证失败!"  
fi

1. openssl 命令

openssl 命令
SSH、SSL、CA证书

客户端A 与服务端B通过http通讯,

1、通讯过程中明文传输,会遭受拦截、修改等问题,所以引入了加密算法,采用对称加密,即A生成的 对称密钥s,那么B也需要对称密钥s解密A发送的数据,那么此时,生成的s 密钥如何不被篡改和窃取、安全的传输到A呢?

当然可以走单独的安全通道,但是需要具有安全的通道,其次安全带宽有限,再加上密钥更新呢

2、故引入非对称的密钥,即 A、B各自生成自己的公钥、私钥,将公钥发布在网上,谁都可以拿到公钥,举例:传输数据中,A传输给B时,A用B的公钥将数据加密,B收到后使用自己的私钥解密,B到A时,亦然,

但是此时你怎么知道B获得公钥就是A的呢?如果A、B 之间存在中间人呢,如下图
在这里插入图片描述

3、所以引入了数字证书概念,
如果A生成的密钥后,由A亲自将自己的公钥放在B的服务上就可以确定该公钥是A的,例如ssh,在访问github时候,一开始需要在自己的电脑上生成密钥对,之后将公钥放在github上,然后就可以通过ssh安全的push和pull,

3.1、SSH,也就是Security Shell,由 IETF 的网络小组(Network Working Group)所制定,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH相当于一个隧道,数据通过的时候保护它不被泄露和篡改,为shell提供安全的传输和运用环境。具体来说,通过它可以安全的远程实行另一台UNIX体系上机器的指令。

3.2
SSL不同于SSH,它是安全套接层(Secure Sockets Layer),是一种安全协议,是Netscape公司在推出Web浏览器首版时一起提出的。当浏览器访问以https://开头的URL时,浏览器通过SSL连接使用HTTP。SSL协议会在数据传输之前对数据进行加密再进行网络传输,保证了用户数据在传输链路上的安全。

数字证书

日常通过web页面访问服务端,服务端不可能给每个客户端发送一个公钥,于是 找了个三方机构证明公钥来自于服务端,
服务端先去证书中心申请证书,数字签名是通过一些特定的hash算法计算得到的一串值,证书中心会将 服务端上传的网站信息、公钥加上证书中心添加的数字签名、证书信息组成证书,但是这些都写明文,故通过hash算法得到hash值,之后客户端收到证书后,用同样的hash的算法验证。

如果存在中间人修改证书信息,生成新的hash呢?

所以对于数字签名进行加密,用CA机构的私钥加密, 而CA的 公钥是预装在系统中的,存在有人截取并由CA证书,但是没有CA的私钥,无法将修改的信息加密。

https = http + SSL / TLS

私钥和公钥是一对多,在https单向认证、双向认证、认证完毕后,采用对称加密通讯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值