对密钥文件和证书文件的初步认知

    最近的项目中接触到了密钥和证书。最开始拿到的是 x.pfx 和 x.der 两个文件,当时傻傻不懂这两者的区别,人云亦云的把这两个文件都称之为 密钥文件 ,把pfx叫做了私钥证书,把der叫做了公钥证书。

    在需要我自行生成这两个文件时才头大了,完全不知道这两者从何而来,怎么生成。在咨询同事以及在网络上搜寻相关资料后,大致明白了 x.pfx 和 x.der 文件的区别以及它们的真正身份:

 pfx文件 

    这是密钥库文件,里面可以包含多个密钥对,不同密钥对可以通过别名alias进行区分。一个密钥对就分为了公钥和私钥。密钥库文件本身就需要密码才能访问,其包含的密钥对也需要密码才能访问。    

    密钥库也有很多的标准,后缀名为 pfx的密钥库使用的标准应该是:PKCS12  ,  这个标准下的后缀名也可以是 .p12  。 查找相关资料说这个标准下 密钥库的密码和密钥对的密码是同一个,暂时未进行实际操作验证。

    所以,最开始把pfx文件叫做私钥文件,其实是不对的。

    java自带的keytool生成的密钥库的标准为 jks ,文件的后缀名称可以是  .jks/.ks 。 但实际使用keytool生成的密钥库文件后缀名却是  ".keystore "  ,但貌似同一个标准下的后缀名可以互相替换。jks标准下的密钥对可以使用与密钥库不同密码,这一点倒是经过了实际的验证。

    其他密钥库标准还有 JCEKS BKS UBER,但貌似主流使用的是 PKCS12 。 java自带的 jks 标准使用的也不少。但说到底,这只是密钥库文件的标准,对于密钥对来说并不影响,因此也有不少的工具可以将不同标准的密钥库文件进行互相的转换,并生成文件。 目前java中主流的密钥库以及密钥对的操作工具是 BouncyCastle 提供的。

 

der文件

    这个是存放了公钥的证书文件。叫它公钥文件到还是不算错。 但实际上 der本身又是一个证书格式的标准,实现其标准的文件只包含公钥,后缀名称可以是 .cer/.crt/.rsa 。 从项目中文件后缀名称为 der ,并且实际证书可以正常的使用这一点来看,至少公钥证书文件的后缀名不影响java程序对其的识别与解析,至少在接触到的系统中是如此。

 

 

    

你可能感兴趣的:(安全)