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 格式的证书文件。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。