客户端与服务器均使用此master secret生成本次会话的会话密钥(对称密钥)。在双方SSL握手结束后传递任何消息均使用此会话密钥。这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。
客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。并通知服务器客户端已经完成本次SSL握手。
服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。并通知客户端服务器已经完成本次SSL握手。
本次握手过程结束,会话已经建立。双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。
几个概念:
1.个人信息交换 (PKCS #12)
个人信息交换格式(PFX,也称为 PKCS #12)允许证书及相关私钥从一台计算机传输到另一台计算机或可移动媒体。
2.DER 编码和Base64编码
在各类证书,私钥及其参数一般有两种表示,Der为二进制表示格式,Base64不言自明,在应用过程中无甚差别,但是因为Base64的文本性,其很容易在HTTP环境传播.
3.PKCS#10:描述证书请求语法, 证书请求文件一般以csr为扩展名.
4.X509证书封装了公钥.一般意义可以认为证书就是公钥,当然公钥未必是以X509证书形式存在.
5.PKCS7,一般用于证书链.以p7b结尾.
6.CRL, Certificate revocation list.证书失效列表.
7.Openssl提供了CA认证的全面支持,Keytool及JCA,JCE API对应了Java对PKI实现
若干问题.
1.客户端数字证书及私钥的发放方法,
可以客户到柜台,由营业员办理
可以由客户生成自己的CSR文件,提交到网站,由系统自己生成.
由客户在网页上添加自己相关信息,由系统生成,发回客户.
以上三种方法都需要进行确认客户的真实性.都需要开发相应的支持系统.可用Java JCE API,Openssl API或是Openssl Commandline,Keytool实现.
2.数字证书 失效问题.
如果发生证书对应密钥丢失,客户可能需要对证书进行调销,这需要建立建立比较完善的CA基础,支持Certificate revocation list,这需要完整的CA解决方案.需要开发相应支持系统.
3.是否所有的客户都必须选用数字证书.
理论上,至少在一段时间的转移过程内,会出现使用和不使用数字证书的客户同时存在,这样需要建立两套不同的系统.还要解决同一入口问题.
4.程序是否还需要用户名和密码的认证.
5.是否支持使用USB Key(这个应该不需要额外的开发工作).
6.项目前台使用Flash管理对后台服务器的连接,经测试能够读取所驻留浏览器的证书(及私钥)信息,成功建立双向SSL连接.
7.纯从安全角度讲,使用由verisign或其它可信的CA机关认证的证书并没有好处,但这样能提高客户对公司的信任度,使公司能明确的向客户确认自己的身份, 从实现角度讲,如果采用自签名CA的话,只是由公司内部CA对客户证书进行签名, 如果是使用经过如verisign签名的证书,那么公司将是二级CA,即证书的信任需要一个证书链,同样也是由公司内的二级CA对客户证书进行签发.
8.调查实现的步骤,
因为没有正式的证书及密钥,测试过程选用了自签名的证书,另外也没有使用完整的CA基础,没有考虑CRL的问题,即证书注销问题.
文章转载于互联网
上一篇:创建pfx数字证书
下一篇:OpenSSL 的使用详解