参考
http://linux2015.blog.51cto.com/9605047/1587662
http://xuweitao.blog.51cto.com/11761672/1909366
服务端在配置HTTPS服务时,加上“HTTP Strict Transport Security”配置项
我们来一起说说HTTPS中间人攻击与证书校验
http://wzlinux.blog.51cto.com/8021085/1908856
公钥和私钥
私钥签名和解密,公钥加密,验证签名
1)、Message Digest commands(信息摘要算法也可以叫单向加密算法)
openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1][-out filename] /path/to/somefile
openssl dgst -sha1 -out /a.cipher /a.txt
2)、Cipher commands(对称加密)
①公钥:public key,从私钥中提取产生,可公开给所有人。
②私钥:secret key,通过工具创建生成,由使用者自己留存,必须保证其私密性。
以下为DH算法的工作原理图
以下为更一般的描述:
Alice生成随机自然数a、随机大质数p和原根g;
Alice和Bob以K值作为密钥进行通信。
注意:在整个密钥协商过程中,p、g、和的值是可以公开给攻击者的,而a,b,K值是不公开的。但即使攻击者知道、p和g的值,也无法计算出a,同理,攻击者无法通过、g和g的值计算出b,更不用说计算出K值(最终Alice和Bob协商好的密钥)了。这个问题就是著名的离散对数问题。
openssl enc -base64 -a -salt -in /etc/passwd -out /passwd.cipher
openssl enc -d -base64 -a -salt -in /passwd.cipher -out /passwd
3)、证书(x509格式)
openssl中有如下后缀名的文件
key格式:私有的密钥
csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
crt格式:证书文件,certificate的缩写
crl格式:证书吊销列表,Certificate Revocation List的缩写
pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式
PKI:Public Key Infrastructure,是指用公钥概念和技术来实施和提供安全服务的具有普适性的安全基础设施。
一个完整的PKI系统必须具有注册机构(RC)、权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书吊销系统(CRL)、端实体(API即应用接口)等基本构成部分。
创建目录,目录放置私钥文件、请求文件、证书文件
顺序:私钥-->公钥 请求文件-->核实 发放证书
私钥文件产生:#openssl genrsa 1024(钥匙长度)>私钥文件名
请求文件产生:#openssl req -new -key 私钥文件 -out 请求文件
证书产生:openssl ca -in 请求文件 -out 证书
加密和发送过程:
1、当发送方Alice有数据要发送给Bob时,为了确保数据能够完整地发送至Bob,首先需要使用单向加密算法去计算出这段要发送的数据的特征码;
2、为了便于Bob收到数据之后可验证身份,发送方Alice使用本地私钥加密这段特征码,并将加密后的特征码附加在数据后面;
3、为了确保通信过程是保密的,发送方Alice生成一个临时的对称密钥,并使用这个对称密钥加密整段数据;
4、发送方Alice获取Bob的公钥,再使用Bob的公钥加密来加密刚才生成的临时的对称密钥,并把加密后的对称密钥附加在整段加密数据后面,而后发送给Bob。
接收和解密过程:
接收和解密的过程和解密发送的过程刚好相反。
1、接收方Bob收到数据之后,先使用自己的私钥去解密这段加密过的对称密钥(由Alice生成);
2、接收方Bob用解密得到的对称密钥去解密整段(发送方用对称密钥)加密的内容;此时接收方Bob得到Alice发送给自己的数据和加密后的特征码;
3、接收方Bob用对方Alice的公钥去解密这段特征码,如果能解密出来,则发送方的身份得到验证(没错,就是Alice发送的);
4、接收方Bob再用同样的单向加密算法去计算这段数据的特征码,与解密得到的特征码进行比较,如果相同,则数据完整性得到验证,否则说明数据有可能被篡改或被破坏。