目录
- 一、背景
- 二、文件格式的区分
- 2.1 .keystore / .jks 文件
- 2.2 .p12 / .pfx 文件
- 2.3 .crt 文件
- 2.4 csr 文件
- 2.5 .pem 文件
- 三、总结
一、背景
我们在日常的开发过程中,经常会见到各种各样的证书相关类型的文件,错综复杂。
其实 keystore
、jks
、p12
、pfx
、crt
、csr
、pem
这些文件类型都是在处理加密和认证过程中常见的文件格式,每种文件都有其特定的用途和格式,我们下面来对这几种类型进行简要说明。
二、文件格式的区分
2.1 .keystore / .jks 文件
- 格式:
.keystore
或.jks(Java Keystore)
是 Java 密钥库系统的默认格式。 - 内容: 私钥、公钥证书,以及可能的其他证书链。
- 用途: 主要用于 Java 应用程序的安全配置,如 Web 服务器的身份验证。
- 示例命令:
# .keystore文件
keytool -genkey -alias myalias -keyalg RSA -keysize 2048 -validity 365 -keystore mykeystore.keystore
# .jks文件
keytool -genkey -alias myalias -keyalg RSA -keysize 2048 -validity 365 -keystore mykeystore.jks
2.2 .p12 / .pfx 文件
- 格式:
PKCS#12
是 一种跨平台的标准格式。 - 内容: 私钥、证书和证书链。
- 用途: 用于多种环境,不仅限于 Java,还可以用于 .NET 应用、IOS 应用等。
- 示例命令:
keytool -importkeystore -srckeystore mykeystore.jks -srcalias myalias -destkeystore mykeystore.p12 -deststoretype pkcs12
2.3 .crt 文件
- 格式: 通常用于 存储
X.509
格式的公钥证书。 - 内容: 只包含公钥证书。
- 用途: 用于安装到 Web 服务器上,以便向客户端证明服务器的身份。
- 示例命令:
# 方式一
keytool -exportcert -keystore d:\keystore\bo.keysotre -alias www.bo.org -file d:\keystore\bo.crt
# 方式二
openssl x509 -in cert.pem -outform PEM -out cert.crt
2.4 csr 文件
- 格式:
CSR(Certificate Signing Request)
是 一个证书签名请求文件。 - 内容: 公钥和一些标识信息,用于向证书办法机构申请证书。
- 用途: 用于向证书颁发机构提交证书申请。
- 示例命令:
# 方式一
keytool -certreq -alias www.bo.org -keystore d:\keystore\bo.keystore -file d:\keystore\cert.csr
# 方式二
openssl req -new -key key.pem -out request.csr
2.5 .pem 文件
- 格式:
PEM(Privacy Enhanced Mail)
是 一种通用的 ASCII 编码的密钥和证书格式。 - 内容: 公钥、私钥或者证书, 通常用于
OpenSSL
中。 - 用途: 广泛用于各种安全协议和应用程序中,包括
SSL/TLS
。 - 示例命令:
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem
三、总结
.keystore/.jks
:Java 应用程序使用的密钥库格式,包含私钥和证书。.pem
:通用的 ASCII 编码的密钥和证书格式,可用于多种目的。.p12/.pfx
: 跨平台的标准格式,包含私钥、证书和证书链。.crt
: X.509 格式的公钥证书文件。.csr
:证书签名请求文件,用于向证书颁发机构申请证书。
具体文件格式的选择取决于具体的需求和所使用的平台。例如:如果你是在 Java 环境中工作,可能会使用 .keystore
或 .jks
文件;如果你需要跨平台兼容性,则可能更倾向于使用 .p12
或 .pfx
文件。
整理完毕,完结撒花~🌻