TLS规范
TLS是设计规范,它的实现有比如OpenSSL, LibreSSL, BoringSSL等,据说OpenSSL名声不太好?
OpenSSL库可以分为:
crypto库函数,密码算法使用库。底层库。
EVP接口,对crypto库函数的抽象,方便调用,还会基于CPU模式进行性能优化。
有一点需要知道,上层应用不需要关心是HTTP还是HTTPS,HTTPS完全按照HTTP标准处理,它是HTTP+TLS,对上层应用开发者透明。
TLS的一些实现:
PKI技术不是TLS协议的一部分,之所以引入PKI,是为了避免李鬼中间人,证明你是你。
浏览器有CA机构的公钥(CA机构的根证书内置在浏览器里了),所以可以校验证书的签名,可以证明证书确实是CA用自己的私钥签发的。
然后再将证书中的用户信息,与访问信息一致,比如域名是一样的。就可以表明身份验证
通过。
然后就可以获取证书里的公钥,进行下一步密钥协商
。
看一个密码套件
查看支持的密码套件
openssl ciphers -V |column -t
测试服务器是否支持某个特定的密码套件:
openssl s_client -cipher “ECDHE-RSA-AES128-SHA” -connect server_of_tls:443 -tls1_1
为了保持前向安全性,使用多的密钥协商算法是DHE, ECDHE,这个不取决于服务器的密钥对,即使服务器的私钥泄露,也不会造成太大的风险。
自建证书就是自己给自己签发的,用途还是比较广的,比如说在企业内部
用着2个命令自己签一个,非常简单,证书链中的特例,就一层。
没有X509v3 extensions属性。所以也没有(CA:TRUE)。
openssl req -newkey rsa:2048 -nodes -keyout ca_key.pem -out ca_csr.pem
#ca_key.pem和ca_csr.pem都可以cat查看。下面的ca_cert.pem也是。
openssl x509 -signkey ca_key.pem -in ca_csr.pem -req -days 365 -out ca_cert.pem
- 点赞
- 收藏
- 关注作者
评论(0)