CA学习指南 联系客服

发布时间 : 星期六 文章CA学习指南更新完毕开始阅读

密钥库文件格式【Keystore】

格式 扩展名 描述 特点 JKS .jks/.ks 【Java Keystore】密钥库的Java实现版本,provider为SUN 【JCE Keystore】密钥库的JCE实现版本,provider为SUN JCE 密钥库和私钥用不同的密码进行保护 相对于JKS安全级别更高,保护Keystore私钥时采用TripleDES 1、包含私钥、公钥及其证书 2、密钥库和私钥用相同密码进行保护 基于JCE实现 JCEKS .jce PKCS12 .p12/.pfx 【PKCS #12】个人信息交换语法标准 【Bouncycastle Keystore】密钥库的BC实现版本,provider为BC 【Bouncycastle UBER BKS .bks UBER .ubr Keystore】密钥库的BC更安全实现版本,provider为BC

证书文件格式【Certificate】

格式 扩展名 描述 特点 DER .cer/.crt/.rsa 【ASN .1 DER】用于存放证书 【PKCS #7】加密信息语法标准 不含私钥、二进制 1、p7b以树状展示证书链,不含私钥 2、p7r为CA对证书请求签名的回复,只能用于导入 1、p7c只保存证书 PKCS7 .p7b/.p7r CMS .p7c/.p7m/.p7s 【Cryptographic Message Syntax】 2、p7m:signature with enveloped data 3、p7s:时间戳签名文件 1、该编码格式在RFC1421中定义,其实PEM是【Privacy-Enhanced MaiPEM .pem 【Printable Encoded Message】 l】的简写,但他也同样广泛运用于密钥管理 2、ASCII文件 3、一般基于base 64编码 PKCS10 .p10/.csr 【PKCS #10】公钥加密1、证书签名请求文件

标准【Certificate Signing Request】 2、ASCII文件 3、CA签名后以p7r文件回复 微软公司特有的双证书文件格式,经常SPC .pvk/.spc 【Software Publishing Certificate】 用于代码签名,其中 1、pvk用于保存私钥 2、spc用于保存公钥

2.4 证书生产

用户在申请证书时,获得一张p10,此时就已经产生私钥了。默认在存在IE中也可以用专用的key保存。P10包含了用户的一些扩展信息戳,然后使用p10去CA系统申请证书,CA给用户颁发的证书盖上了CA的标志,证书带有公钥。是p7b格式,用户想把私钥从IE中拿走就是下载为pfx格式。

如果门户系统需要使用数字认证系统,首先门户系统需要通过CSP产生一个私钥及p10。然后通过p10去CA服务器申请一个数字证书。门户系统申请到的CA用户证书存放格式为jks文件(Java开发的系统)或pem文件(C开发的系统)。访问门户系统时可以采用spkm或https协议。

2.5 证书签名与验签

通常用户证书是由一个CA机构或者支级CA机构来颁发有效证书的。被颁发的证书被根CA签名过,而使用用户证书就需要根CA来对用户证书验签了,只有通过验签了才说明用户证书是可信任的,可以进行安全的操作。

用户证书生产与使用过程如下:

1、用户申请证书,填写相关信息后提交CA机构。

2、将用户填写的相关信息进行hash运算,然后用根CA私钥对hash进行加密。这个过程叫做签名

3、用户得到的证书内容中包含被根CA私钥加密过的hash,及用户证书

自已的证书内容。

4、用户使用证书时,先用根CA的公钥对用户证书中的相关信息解密得 值

到hash,然后再把用户证书中相关信息也做一次hash,如果两个hash一致则证明用户证书是由该要根CA颁发的。这个过程叫做验签

2.6 SSL协议

SSL由两个共同工作的协议组成:\记录协议\(SSL Record Protocol)和\握手协议\(SSL Handshake Protocol)。SSL 记录协议建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持;SSL 握手协议建立在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。

2.6.1 握手协议过程

SSL握手协议包含两个阶段:

第一个阶段用于建立私密性通信信道,第二个阶段用于客户认证。 以下详细列出双手握手的过程实现原理(1-4是单向握手)

1、客户端的浏览器向服务端传送客户端 SSL 协议的版本号,加密算法的种类等信息。

2、服务端接收到请求后,确定几种客户端已有的加密算法。同时将服务器证书(含公钥)等相关信息发送给客户端

3、浏览器中的SSL软件发给服务器一个随机产生的传输密钥,此密钥由已验证过的公钥加密,随机产生的传输密钥是核心机密,只有客户的浏览器和此公司的Web服务器知道这个数字序列。此时服务器的证书信息将传输至客户端 4、客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA 中心所签发的。以及证书是否在有效期等。如果检查通过则开始访问,否则将提示用户安全隐患,是否继续。

5、服务器被客户端认证后。服务器方向客户发出认证请求消息。客户收到服

务器方的认证请求消息后,发出自己的证书,并且监听对方回送的认证结果。而当服务器收到客户的证书后,给客户回送认证成功消息,否则返回错误消息。到此为止,握手协议全部结束。

要使用SSL协议,服务器至少有一个私有密匙和一个用于验证身份的证书。私有密匙在密匙交换算法中用到,证书将发送到客户端,以通知服务器端的身份。如果SSL服务器要验证客户端的身份,那么客户端必须也有自己的密匙库(包含私有密匙和证书)。JSSE中引入了信任库(truststore)的概念,它是用来保存证书的数据库。客户端或者服务器通过信任库来验证对方的身份。

2.6.2 握手过程证书的验证

1、客户端对服务器证书进行验证,包括:

1)、证书的颁发者是否在“根受信任的证书颁发机构列表”中 2)、验证是否由信任的根证颁发的服务器证书。 3)、验证服务器证书的域名与实际域名是否匹配。 4)、验证服务器证书的有效期、有效性

2、服务器端对客户证书进行验证,包括:

5)、验证客户端证书的域名与访问的网站是否一致