内容简介:本文摘自码农翻身,希望能更进一步的讲解证书以及网络安全。之前在网络上的通信都是明文,中间的交换机都可以截取、篡改数据包,于是加密算法便诞生了,当然这其中少不了数学家的智慧。
本文摘自 码农 翻身,希望能更进一步的讲解证书以及网络安全。
之前在网络上的通信都是明文,中间的交换机都可以截取、篡改数据包,于是加密算法便诞生了,
当然这其中少不了数学家的智慧。
从对称加密说起
在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖(怎么又是你?!),
还有一个是位于米国的Bill
这俩哥们隔着千山万水,通过网络联系上了, 两个人臭味相投,聊得火热。
有一天, Bill 突然意识到: 坏了, 我们的通信是明文的, 这简直就是网络上裸奔啊,
任何一个不怀好意的家伙都可以监听我们通信,打开我们发送的数据包,窥探我们的隐私啊。
最容易想到也就是上面的方案,既然明文不行,那我就做一次加密,用密文发送。
重点在于
加密和解密算法是公开的,那个密钥是保密的,也就是对称加密算法
但是怎么保证密钥不被截取?仿佛回到了鸡生蛋蛋生鸡的问题上。
用非对称加密解决?
Bill 和 张大胖的通信无法加密,说话谨慎了不少, 直到有一天, 他们听说了一个叫做RSA的非对称加密算法,一下子来了灵感。
这个RSA算法非常有意思,它不是像之前的算法, 双方必须协商一个保密的密钥, 而是有一对儿钥匙, 一个是保密的,称为私钥,另外一个是公开的,称为公钥。
当然RSA的特性在于公钥加密过的数据,只能用私钥来解密。
所以说上述的聊天过程应该变成这样
非对称加密+对称加密
因为RSA算法比之前的对称密钥算法要慢上百倍,这样为了安全都不能愉快的聊天了。
但是可以把两者结合起来
(1) 我生成一个对称加密算法的密钥, 用RSA的方式安全发给你
(2) 我们随后就不用RSA了, 只用这个密钥,利用对称加密算法来通信
下面开始正式介绍证书
证书分类
根据秘钥对的产生方式,可将证书分为两类:签名证书和加密证书。
根据证书的用途,通常将证书分为SSL服务器证书、SSL客户端证书、代码签名证书、Email证书,时间戳服务器证书、OCSP服务器证书等。
根据文件格式,以下为Windows支持的证书格式
下图大致描述了SSL服务端证书的使用流程
Openssl
SSL(Secure Socket Layer) 安全协议是由 Netscape 公司首先提出,最初用在保护 Navigator 浏览器和 Web 服务器之间的 HTTP 通信 ( 即 HTTPS) 。后来 SSL 协议成为传输层安全通信事实上的标准,并被 IETF 吸收改进为 TLS(Transport Layer Security) 协议。 SSL/TLS 协议位于 TCP 协议和应用层协议之间,为传输双方提供认证、加密和完整性保护等安全服务。 SSL 作为一个协议框架,通信双方可以选用合适的对称算法、公钥算法、 MAC 算法等密码算法实现安全服务。
OpenSSL 是著名的 SSL 的开源实现,是用 C 语言实现的。
Openssl包括三大类命令,,分别是是常用命令、消息摘要和密码命令。
Standard commands asn1parse ca ciphers cms crl crl2pkcs7 dgst dh dhparam dsa dsaparam ec ecparam enc engine errstr gendh gendsa genpkey genrsa nseq ocsp passwd pkcs12 pkcs7 pkcs8 pkey pkeyparam pkeyutl prime rand req rsa rsautl s_client s_server s_time sess_id smime speed spkac srp ts verify version x509 Message Digest commands (see the `dgst' command for more details) md4 md5 rmd160 sha sha1 Cipher commands (see the `enc' command for more details) aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb camellia-256-cbc camellia-256-ecb cast cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx rc2 rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 rc4-40 seed seed-cbc seed-cfb seed-ecb seed-ofb
接下来就让我们来用openssl自建CA实现SSL服务的证书
openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.pem \ -subj '/C=AA/ST=AA/L=AA/O=AA Ltd/OU=AA/CN=AA/emailAddress=aa@aa.com' openssl genrsa -out client1.key 2048 openssl req -new -key client1.key -out client1.csr \ -subj '/C=BB/ST=BB/L=BB/O=BB Ltd/OU=BB/CN=BB/emailAddress=bb@bb.com' openssl x509 -req -days 365 -CA rootCA.pem -CAkey rootCA.key \ -CAcreateserial -CAserial serial -in client1.csr -out client1.pem openssl verify -verbose -CAfile rootCA.pem client1.pem
mkdir private openssl genrsa -out private/cakey.pem 2048 openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 touch index.txt serial crlnumber echo 01 > serial openssl genrsa -out httpd.key 2048 openssl req -new -key httpd.key -out httpd.csr openssl ca -in httpd.csr -out httpd.crt -days 365 openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client" openssl pkcs12 -export -in admin.pem -inkey admin-key.pem -certfile ca.pem -out kube-admin.p12 openssl x509 -req -in haimaxy.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out haimaxy.crt -days 500 openssl genrsa -out root-ca.key 2048 openssl req -new -key root-ca.key -out root-ca.req openssl x509 -req -days 365 -signkey root-ca.key -in root-ca.req -out root-ca.cer --- openssl x509 -noout -text -in root-ca.cer ---- openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.req openssl ca -config ./openssl.cnf -in server.req -out server.cer
openssl x509 -noout -text -in kubernetes.pem
openssl rsa -noout -text -in myserver.key
openssl req -noout -text -in myserver.csr
openssl x509 -noout -text -in ca.crt
openssl verify selfsign.crt
openssl verify -CAfile ca.crt myserver.crt
参考
http://seanlook.com/2015/01/18/openssl-self-sign-ca/
https://www.barretlee.com/blog/2016/04/24/detail-about-ca-and-certs/
http://qimingyu.com/2017/04/28/%E8%87%AA%E5%BB%BACA%E5%AE%9E%E7%8E%B0HTTPS%E6%95%99%E7%A8%8B/
http://blog.51cto.com/xxrenzhe/1370114
https://razeen.me/post/what-ct-is-and-how-it-works.html
https://access.redhat.com/documentation/en-US/Red_Hat_Certificate_System/8.0/html/Admin_Guide/Standard_X.509_v3_Certificate_Extensions.html以上所述就是小编给大家介绍的《安全证书 CA和Openssl那些事》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- RHCE证书,CCNA证书
- DV SSL证书和其他证书有什么不同?
- 生成根证书CA及签发子证书及配置站点实践
- OpenSSL命令速查手册:证书、私钥与证书签名请求文件
- 技术讨论 | Apostille:让假证书以假乱真的证书伪造工具
- 360浏览器推出自有根证书计划 吁加快证书安全技术改造
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Spring技术内幕
计文柯 / 机械工业出版社 / 2010-1-1 / 55.00元
内容简介: 本书是Spring领域的问鼎之作,由业界拥有10余年开发经验的资深Java专家亲自执笔!Java开发者社区和Spring开发者社区一致强烈推荐。 国内第一本基于Spring3.0的著作,从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从木书中参透Spring框架的优秀架构和设计思想,而且还能从Spring优雅的实现源码中一窥......一起来看看 《Spring技术内幕》 这本书的介绍吧!