异想天开

What's the true meaning of light, Could you tell me why

https协议握手过程

日期:2014-05-28 11:27:14
  
最后更新日期:2015-07-27 15:16:38
1.nginx搭建https服务器-制作证书,配置服务器,一般正式网站的https的证书由某些知名机构签发。
证书制作备忘:
[code lang="cpp"]
1.生成rsa私钥
openssl genrsa -des3 -out server.key 1024
2.生成ssl证书,这张证书需要签名,比如用第三方信用机构签名,也可以自己签自己,不过浏览器会警报该证书的合法性
openssl req -new -key server.key -out server.csr
3.自己给自己签名
openssl rsa -in server.key -out server_nopwd.key
openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt
[/code]
对于生成的server.crt证书,这里默认证书是pem格式,base64编码。
查看pem证书:
[code lang="cpp"]
openssl x509 -in cert.pem -text -noout
openssl x509 -in cert.cer -text -noout
openssl x509 -in cert.crt -text -noout
[/code]
查看der二进制格式证书:
[code lang="cpp"]
openssl x509 -in certificate.der -inform der -text -noout
[/code]
两种格式相互转化:
[code lang="cpp"]
PEM to DER
openssl x509 -in cert.crt -outform der -out cert.der
DER to PEM
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
[/code]
管理证书,见参考1

2.https协议
使用https协议防止伪造服务器,https握手过程的简单描述如下,用少量的语言,可能不太精确: 1.浏览器主动向网站发起请求,浏览器会携带自己的必要信息,如支持的加密算法,hash算法等。
2.服务端发送给浏览器自己的公钥,和用私钥加密服务器的信息如证书,密钥等,同时发送握手hash值。
3.浏览器接收证书,验证证书的合法性,验证服务器的hash值是否正确。用服务器公钥加密自己的密钥和握手数据并发送hash值。
4.服务器解密数据,验证浏览器的hash值是否正确。
若3,4发现不正确,下面的步骤就不会进行。

非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256
参考:
1.证书管理