1. TSL和SSL
SSL/TLS 是一种密码通信框架,他是世界上使用最广泛的密码通信方法。SSL/TLS 综合运用了密码学中的对称密码,消息认证码,公钥密码,数字签名,伪随机数生成器等,可以说是密码学中的集大成者。
SSL介于应用层和TCP层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。
1. 术语
SSL(Secure Socket Layer)
: 安全套接层,是1994年由Netscape公司设计的一套协议,并与1995年发布了3.0版本。TLS(Transport Layer Security)
: 传输层安全是IETF在SSL3.0基础上设计的协议,实际上相当于SSL的后续版本。keystore
: keytool 生成证书的存储库,用来存储若干条目,每一条目包含公私钥,主体信息等。默认为用户目录下.keystore,相当于一个有密码保护的文件。truststore
: 与 keystore 格式相同,但是为区分只用来存放信任的证书,不存密钥等信息。CA
: Certificate Authority,证书授权中心,负责管理和签发证书的第三方机构,作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改。
2. 生成
1. jdk 自带工具
1 | keytool -genkeypair^ |
查看内容
1 | keytool -list -v -keystore rest.keystore |
转换
1 | openssl x509 -inform der -in flink.cer -out flink.pem |
2. 证书转换
1. wiki
1. PFX
PFX 格式是二进制格式,用来存储服务证书、中间证书和私钥在一个文件中。PFX 文件一般用来在 Windows 系统中使用,来导入和导出证书和私钥。
当其转为 PEM 格式时,OpenSSL 会加上述证书和私钥放入一个文件中,使用时需要用文本编辑器打开,并分隔出相应证书和私钥。
2. PEM
PEM 格式是证书颁发机构颁发证书的最常见格式。PEM证书通常有诸如.pem、.crt、.cer和.key等扩展名。它们是Base64编码的ASCII文件,包含”—–BEGIN CERTIFICATE—–”和”—–END CERTIFICATE—–”语句。服务器证书、中间证书和私钥都可以放到PEM格式中。
Apache和其他类似的服务器使用PEM格式的证书。几个PEM证书,甚至私钥,都可以包含在一个文件中,一个在另一个下面,但大多数平台,如Apache,希望证书和私钥是在不同的文件中。
3. DER
DER 格式只是证书的二进制形式,而不是 ASCII PEM 格式。它的文件扩展名有时是.der,但它的文件扩展名往往是.cer,所以区分DER.cer文件和PEM.cer文件的唯一方法是在文本编辑器中打开它,寻找BEGIN/END语句。
所有类型的证书和私钥都可以用DER格式进行编码。DER 通常用于 Java 平台。SSL 转换器只能将证书转换为 DER 格式。如果你需要将私钥转换为 DER,请使用本页面的 OpenSSL命令。
2. PFX 转换 DER
1. PFX to PEM
获取 PFX 文件,转换成 PEM 文件
1 | PFX 文件转 PEM 文件,此处协议是 pkcs12,需要输入生成时的密码 |
2. PEM 文件分隔
转成的 PEM 文件中,会包含证书(certificate)和私钥(private)信息,使用文本编辑器打开,并拆分
1 | Bag Attributes |
3. PEM 转 DER
仅处理证书的 PEM 文件
1 | PEM 文件转 DER 文件,此处协议是 x509 |