上面所有用到的证书及其组件,如公钥,私钥,csr等,其格式都是PEM的,这也是最常见的一种格式,
可以用文本便及其打开,通常是以-----BEGIN XXX------ 开头, 以-----END XXX----- 结束,
中间的部分则是实际密钥的base64编码, 其二进制表示也称为DER 格式, 两者可以用base64转化,
因此都属于x509实现的证书格式.
还有比较常见的证书格式,为PKCS7 和PKCS12 . 其中PKCS7是由JAVA使用的开放标准,并且也被
Windows所支持, 其内是不包含私钥信息的; 而PKCS12则是一种非公开的标准,用来提供比PEM的
纯文本格式更高的安全性, 这是Windows建议使用的格式, 其中可以包含私钥信息.
不同格式的转换如下所示.
PEM <-> DER:
openssl x509 -in bar.pem -outform der -out bar.der
openssl x509 -inform der -in foo.der -out foo.pem
PEM <-> PKCS7:
openssl crl2pkcs7 -nocrl -certfile foocert.pem -out foocert.p7b
openssl pkcs7 -in foocert.p7b -print_certs -out barcert.pem
PEM <-> PKCS12:
openssl pkcs12 -inkey private.key -in foocert.pem -export -out foocert.pfx
openssl pkcs12 -in foocert.pfx -nodes -out barcert.pem
后记
当今我们使用最多的https本质上就是在http协议的基础上对传输内容进行了非对称的加密,
当然实现过程多了很多复杂的交互, 感兴趣的可以去查看SSL和TLS协议. 我想说的是,
这一切信任机制的基石是对于CA的信任, 如果说CA的私钥泻露,或者我们错误地信任了一个坏CA,
那么https的隐私性也就不复存在了, 因为其可能对无效的csr进行签名, 从而使得https中间人攻击
成为现实. 据说早在两年前伟大的防火墙就已经可以对https进行监听,敏感词识别和连接重置,
后来因为某种原因才从大范围应用转为只对特殊对象使用,不过那是后话了.
博客地址:
- http://pppan.tk
- 有价值炮灰-博客园
欢迎交流,文章转载请注明出处. (编辑:云计算网_泰州站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|