1.公钥和私钥【非对称加密】
公钥加密的数据只有私钥可以解密,私钥加密的数据只有公钥可以解,公钥是不安全的,在通信链路上会相互发送,可能被黑客获取,私钥存放在用户主机上。
A-》B
用A的私钥加密,签名,保证发送方的真实性。
再用B的公钥加密,只有B能解开,保证数据安全性。
对称加密用一个密码,容易被破解,战争期间用一个必须人为传送,送命很常见。
非对称加密,都拥有公钥和自己的私钥,先用自己私钥解密再用对方公钥解密即可。
公钥和私钥都可以用来加密数据,相反用另一个解开,公钥加密数据,然后私钥解密的情况被称为加密解密,私钥加密数据,公钥解密一般被称为签名和验证签名.
https认证传输服务端公钥,然后将密钥用公钥加密,对方用密钥解密得到密码。以后用词密码通信加解密即可。【对称加解密】
详解:
https://blog.csdn.net/zxh2075/article/details/79967227
https://blog.csdn.net/udeankyd/article/details/81059704
https://www.cnblogs.com/darksir/p/3704198.html
单向双向证书自定义CA
https://www.cnblogs.com/dreamingodd/p/7357029.html
https://blog.csdn.net/weixin_30531261/article/details/80891360
2.单向和双向认证
https://blog.csdn.net/qq_25406669/article/details/80596664
单向认证【客户端校验服务端证书,需要服务端配置证书】
双向认证【服务端也需要校验客户端证书,需要在客户端配置证书】
服务端配置证书:
server {
listen 443;
server_name test.com www.test.com;
root html;
index index.html index.htm;
ssl on; #开启ssl
ssl_certificate /PATH/TO/test.com.crt; #服务器证书位置
ssl_certificate_key /PATH/TO/test.com.key; #服务器私钥
ssl_client_certificate /home/zhangyong/key/ca.crt; #CA证书用于验证客户端证书的合法性
ssl_verify_client on; #开启对客户端的验证
ssl_session_timeout 5m; #session有效期,5分钟
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL'; #加密算法
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ =404;
}
客户端配置证书。
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
proxy_ssl_ciphers "RC4-SHA";
proxy_ssl_session_reuse on
proxy_ssl_name $sp_host;
proxy_ssl_server_name on;
set $with_ca_cert 1;
proxy_ssl_verify on;
proxy_ssl_verify_depth 5;
proxy_ssl_trusted_certificate /home/test/client_ca.crt;