SSL 证书基本概念扫盲
keytool VS openssl
keytool 和 openssl 是俩个证书管理工具。
keytool 是 java JDK 自带的证书管理工具,使用 keytool 可以生成密钥,创建证书。只要装了 jdk,并正确设置了环境变量,就可以之间通过命令行执行 keytool 命令来管理证书。
openssl 则是一个开源的安全套接字层密码库,功能比 keytool 更加丰富。
X.509 VS PKCS
PKCS 全称 Public-Key Cryptography Standards
,即公钥标准,PKCS 已经发布了15个标准。
- PKCS#12 包含了公钥和私钥的二进制格式的证书形式,以
.pfx
作为证书文件后缀。
X.509 则是一个通用的证书标准,规定了证书应该包含哪些内容,X.509 通常有俩种编码方式,一种是二进制编码,另一种是 Base64 编码。
- X.509#DER 二进制格式证书,常用后缀
.cer
.crt
- X.509#PEM 文本格式证书,常用后缀
.pem
证书文件格式
文件后缀 | 文件类型 | 说明 |
---|---|---|
.DER或.CER | 二进制格式 | 只含有证书信息,不包含私钥。 |
*.CRT | 二进制格式或文本格式 | 只含有证书信息,不包含私钥。 |
*.PEM | 文本格式 | 一般存放证书或私钥,或同时包含证书和私钥。.PEM文件如果只包含私钥,一般用.KEY文件代替。 |
.PFX或.P12 | 二进制格式 | 同时包含证书和私钥,且一般有密码保护。 |
证书格式之间是可以互相转化的。用到的时候查对应的 openssl 或 keytool 命令就好了。
您可以使用记事本直接打开证书文件。如果显示的是规则的数字字母(如下所示内容),那么该证书文件是文本格式。
—–BEGIN CERTIFICATE—–
MIIE5zCCA8+gAwIBAgIQN+whYc2BgzAogau0dc3PtzANBgkqh......
—–END CERTIFICATE—–
- 如果存在
——BEGIN CERTIFICATE——
,则说明这是一个证书文件。 - 如果存在
—–BEGIN RSA PRIVATE KEY—–
,则说明这是一个私钥文件。
常见Web服务软件
常见的 Web 服务软件,通常都基于 OpenSSL 和 Java 两种基础密码库。
-
Tomcat、Weblogic、JBoss 等 Web 服务软件,一般使用 Java 提供的密码库。通过 Java Development Kit(JDK)工具包中的 Keytool 工具,生成 Java Keystore(JKS)、keystore 格式的证书文件。
.keystore
和.jks
都是 java 用来存放密钥的文件。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。 -
Apache、Nginx 等 Web 服务软件,一般使用 OpenSSL 工具提供的密码库,生成 PEM、KEY、CRT 等格式的证书文件。
-
IBM 的 Web 服务产品,如 Websphere、IBM Http Server(IHS)等,一般使用 IBM 产品自带的 iKeyman 工具,生成 KDB 格式的证书文件。
-
微软 Windows Server 中的 Internet Information Services(IIS)服务,使用 Windows 自带的证书库生成 PFX 格式的证书文件。