利用openssl生成证书—增加subjectaltname字段(SANs)
2014-12-02 13:46阅读:
1.Https其实就是http的加密版,对http明文进行了对称加密传输,对称加密密钥通过https之前的握手协商(TLS流程)生成
2.TLS流程用于生成本次https会话使用的对称加密密钥,TLS流程是一个非对称加密协商的过程,客户端会将随机生成一个会话对称密钥,并且用证书中的公钥对对称密钥加密,传给https服务端,服务端通过只有自己知道的私钥解开客户端加密的消息,获得客户端的对称密钥,以后传输https消息都用对称密钥加密消息传输,达到了消息的保密安全传输。具体TLS协商流程网上已经有很多说明了。
3.证书是https实现加密的必要途径,一般的https服务都是单向认证的过程,单向认证就是对服务器的认证,保证服务器的可靠性,正确的生成证书的方式是服务器(也就是https服务的提供者)生产私钥和公钥对,然后将公钥交给CA(就是证书颁发结构),CA会给用户的公钥进行签名生成证书,然后将证书颁发给服务端,这样用户访问https服务的时候,就能获得服务端的证书,由于是第三方可靠的CA进行签名过的证书,客户端就会信任https网站,并且不做安全提醒,如果证书不是由第三方受信任的CA机构颁发,客户端就会提示服务器危险信息。
4.一般模拟测试都是用openssl和jdk工具生成模拟证书,生成证书要注意的生成的证书要是自己服务器的ip或者域名
5.https也有双向认证,双向认证需要客户端也生成证书,客户端检查服务器的证书,服务器检查客户端的证书,一般都不做客户端的检查认证,所以基本都是单向认证。
6.jdk自带的keytool工具可以生成证书库,但是keytool生成的证书库不方便提取私钥,需要编程才能从keystore文件中提取私钥,不方便wireshark解密https抓包,openssl比较方便提取私钥,建议使用
7.模拟生成测试证书可以按照网上的说明进行
http://blog.csdn.net/jasonhwang/article/details/2344768
