HTTPS双向认证及密钥总结

公钥私钥:

1)公钥加密,私钥解密:加解密

为什么不能私钥加密公钥解密? 私钥加密后,公钥是公开的都能解密,没有意义。

2)私钥签名,公钥验签:属于身份验证,防串改,防抵赖

A私钥可以解密A公钥的加密内容,但是无法确认发送加密内容的人是不是B,所以,发送者B用B的私钥签名,A用B的公钥解密签名即可确认是B发送,再用A的私钥解密消息即可。

3)CA证书:

就是CA机构(Certificate Authority)颁发的证书:其实public.cert就是证书。

证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。

证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、私钥、权威机构的签字和有效期等等。证书的格式和验证方法普遍遵循X.509 国际标准。

4)JKS专用格式

Keystore包含:公钥私钥证书

=>查看详情:keytool -v -list -keystore scb-api-banking.jks

5)PKCS12行业标准格式

PKCS#12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。

其以二进制格式存储,也称为 PFX 文件,在windows中可以直接导入到密钥区。

注意,PKCS#12的密钥库保护密码同时也用于保护Key。

6)HMAC:

HMAC-SHA256需要SecretKey

RSA-SHA256需要PrivateKey

Hash-based Message Authentication Code:哈希运算消息认证码.

MAC消息认证码:它是一个需要密钥的算法,可以对可变长度的消息进行认证,把输出的结果作为认证符。

SHA散列函数:它是将任意长度的消息映射成为定长的散列值的函数,以该散列值消息摘要)作为认证符。

HMAC散列消息认证码:是一种利用密码学中的散列函数来进行消息认证的一种机制,所能提供的消息认证包括两方面内容:①消息完整性认证 ②信源身份认证。

虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

7)X509

X.509 是密码学里公钥证书的格式标准。

X.509证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构CA的签名,也可以是自签名)

Https双向认证:

8)HTTPS 即HTTP + SSL / TLS

用户可以通过服务器证书验证他所访问的网站是否是真实可靠

HTTPS优势:

1)信息加密: 非对称加密算法和随机码,对称加密数据

2)身份验证:数字证书(单向认证、双向认证)

3)完整性校验:校验证书总公钥的完整性

9)Https单向认证、双向认证

单向验证:一般指客户端校验服务端证书,服务端并不检查客户端证书

双向认证:服务端也检查客户端证书

客户端验证服务器证书:浏览器内置公钥,HttpClient使用JDK内置公钥:jdk1.8.0_261\jre\lib\security\cacerts

服务器端验证客户端证书:服务端使用根证书公钥和hash验证客户端证书签名,通过后使用客户端公钥加密服务器选择的对称加密算法,客户端生成随机码

注意:服务器选择的对称加密算法,客户端生成随机码,用对方公钥加密。

10)数字证书:

证书签名:先hash再privatekey私钥加密,

证书中有:证书内容,hash算法,签名

证书使用:当客户端发起请求时,服务器将该数字证书发送给客户端,客户端通过CA机构提供的公钥对加密密文进行解密获得散列值(数字签名),

同时将证书内容使用相同的散列算法进行Hash得到另一个散列值,比对两个散列值,如果两者相等则说明证书没问题。

11)CSR证书请求文件中内容:

CSR是Certificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,

证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。

12)OpenSSL 和 keytool:

都是密钥,数字证书管理工具

区别:keytool没办法签发证书,而openssl能够进行签发和证书链的管理

java 复制代码
==>获取公钥
   Certificate cert = keyStore.getCertificate(signatureKeyAlias);
   PublicKey publicKey = cert.getPublicKey();
==>获取私钥
   PrivateKey privateKey = (PrivateKey) keyStore.getKey(signatureKeyAlias, keyPassword)

99)openssl 生成证书_使用证书和私钥导出P12格式个人证书

1, 产生CA证书

1.1, 生成ca的私钥

openssl genrsa -out cakey.pem 2048

1.2, 生成ca的自签名证书请求

openssl req -new -key cakey.pem -subj "/CN=Example Root CA" -out cacsr.pem

1.3, 自签名ca的证书

openssl x509 -req -in cacsr.pem -signkey cakey.pem -days 999 -out cacert.pem

2, 产生个人证书

2.1, 生成个人证书的私钥

openssl genrsa -out alicekey.pem 2048

2.2, 生成个人证书请求

openssl req -new -key alicekey.pem -subj "/emailAddress=alice@example.com" -out alicecsr.pem

2.3, 签发个人证书

openssl x509 -req -in alicecsr.pem -CA cacert.pem -CAkey cakey.pem -days 999 -set_serial 01 -out alicecert.pem

3, 合并证书和私钥得到p12格式的个人证书

openssl pkcs12 -export -in alicecert.pem -inkey alicekey.pem -certfile cacert.pem -out alice.p12

4, 提取个人证书

openssl pkcs12 -in alice.p12 -nokeys -clcerts -out alicecert.pem

5, 提取个人证书的私钥

openssl pkcs12 -in alice.p12 -nocerts -out alicekey.pem

6, 提取ca证书

openssl pkcs12 -in alice.p12 -nokeys -cacerts -out cacert.pem

相关推荐
凌云C8 小时前
5G 协议体系与交互流程
网络协议
X7x513 小时前
跨厂商路由引入(重发布)实战指南:华为、华三、思科的逻辑差异与配置避坑
网络协议·信息与通信·信号处理·实施路由引入
猫头_13 小时前
AI 流式传输工程指南:有了 EventSource 为何还要 Fetch?
javascript·http·llm
玩转4G物联网14 小时前
FS800DTU 新品上线|免费使用 DMP 设备管理平台,支持远程批量配置 & OTA 升级
物联网·网络协议·tcp/ip·云平台·核心板·fs800dtu·iot管理平台
Chloeis Syntax14 小时前
JAVAEE初阶 --- 构造HTTP请求
网络·网络协议·http·postman
wuqingshun31415915 小时前
说说TCP的3次握手?为什么需要三次握手?
服务器·网络协议·tcp/ip
无锡耐特森16 小时前
解决网关数据异常EtherNetIP 转Modbus TCP专用动态监测
网络·网络协议·tcp/ip
2401_8734794017 小时前
爬虫IP怎么防?IP离线库四层识别+日志留存,反爬留证两不误
爬虫·网络协议·tcp/ip·ip
超级赛博搬砖工18 小时前
什么是移动代理IP?与住宅IP有何区别?
网络·网络协议·tcp/ip
Tizzgod18 小时前
W55MH32 开箱分享 — 一块板子同时连俩TCP服务器
服务器·网络协议·tcp/ip