什么是CA?
CA就相当于一个认证机构,只要经过这个机构签名的证书我们就可以当做是可信任的。我们的浏览器中,已经被写入了默认的CA根证书。
什么是证书?
证书就是将我们的公钥和相关信息写入一个文件,CA用它们的私钥对我们的公钥和相关信息进行签名后,将签名信息也写入这个文件后生成的一个文件。
证书格式(是一种标准):
x509 这种证书只有公钥,不包含私钥。
pcks#7 这种主要是用于签名或者加密。
pcks#12 这种含有私钥,同时也含有公钥,但是有口令保护。
编码方式:
.der扩展用于二进制DER编码的证书,这些文件也可能承载CER或CRT扩展。内容不可查看。
.pem 扩展用于不同类型的X.509v3文件,是以“ - BEGIN ...”前缀的ASCII(Base64)数据,可以查看内容。
证书:
.csr 后缀的文件是用于向ca申请签名的请求文件
.crt .cer 后缀的文件都是证书文件(编码方式不一定,有可能是.pem,也有可能是.der)
私钥:
.key 后缀的文件是私钥文件
证书仓库(保存多个证书和密钥,通过别名可以获取到,获取私钥需要密码才可以):
.jks:JAVA的证书仓库,java用的存储密钥的容器。可以同时容纳n个公钥或私钥,后缀一般是.jks或者.keystore或.truststore等,keystore 是Eclipse 打包生成的签名,jks是Android studio 生成的签名(很多第三方市场,我们上传apk的时候,他们只支持keystore,需要我们把.jks签名转化为.keystore。)。
.pfx:windows平台的证书仓库,和jks功能相同但文件格式不同,pfx是浏览器用的。
(可以用一些工具程序把pfx转化成jks格式供java程序使用。据说IE导出的pfx格式不标准,转化jks时往往报错,可以尝试用Netscape Navigator导入再导出,然后再转化。)
Keytool或Keystore使用及证书转换:
https://blog.csdn.net/meng564764406/article/details/79427687
http://www.blogjava.net/lihao336/archive/2012/02/03/369303.html