刚开始接触证书,很容易就会被各种名词整的迷迷糊糊,通过搜索引擎一搜索,我们会发现很多介绍文章,如果没接触过这一块的话,一上来很多的名字就会把人绕晕了。什么csr,crt,cer,keystore等等。
我们知道,现在的网站为了数据的安全,往往都会使用证书进行签名或者加密数据。可以证书的各种后缀让人无从下手,不知道该用什么,以及怎么使用。
什么是CA?
CA就相当于一个认证机构,只要经过这个机构签名的证书我们就可以当做是可信任的。我们的浏览器中,已经被写入了默认的CA根证书。
什么是证书?
证书就是将我们的公钥和相关信息写入一个文件,CA用它们的私钥对我们的公钥和相关信息进行签名后,将签名信息也写入这个文件后生成的一个文件。
证书格式(是一种标准)
x509 这种证书只有公钥,不包含私钥;
pcks#7 这种主要是用于签名或者加密;
pcks#12 这种含有私钥,同时也含有公钥,但是有口令保护;
编码方式
.pem 后缀的证书都是base64编码;
.der 后缀的证书都是二进制格式;
证书
.csr 后缀的文件是用于向ca申请签名的请求文件;
.crt .cer 后缀的文件都是证书文件(编码方式不一定,有可能是.pem,也有可能是.der);
私钥
.key 后缀的文件是私钥文件;
包含证书和私钥
.keystore .jks .truststore 后缀的文件,是java搞的,java可以用这个格式。这个文件中包含证书和私钥,但是获取私钥需要密码才可以, 这是一个证书库,里面可以保存多个证书和密钥,通过别名可以获取到。(不同的后缀是为了区分不同的用途以及保存的信息的差异);
.pfx 主要用于windows平台,浏览器可以使用,也是包含证书和私钥,获取私钥需要密码才可以;
知识点
-
使用公钥操作数据属于加密;
-
使用私钥操作数据属于签名;
-
公钥和私钥可以互相加解密;
-
不同格式的证书之间可以互相转换;
-
公钥可以对外公开,但是私钥千万不要泄露,要妥善保存。
注意
在我们备份证书信息的时候,最好使用.jks或者.pfx文件进行保存,这样备份的证书文件可以被完整的导出。
我们在使用证书的时候,要根据不同平台,不同应用的要求,转换成不同的格式进行使用。