首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >pem格式的ssl证书如何给tomcat使用

pem格式的ssl证书如何给tomcat使用

作者头像
用户5921339
发布2025-08-12 10:45:16
发布2025-08-12 10:45:16
4040
举报

同事给了一个pem格式的证书,但是web服务器是tomcat,没法直接使用pem格式的证书,需要进行格式转换。我们看看ssl证书有哪些格式,使用场景有哪些,不同证书格式之间如何转换。

一、核心格式分类

1. PEM格式 (Privacy Enhanced Mail)
  • 特点:
    • Base64 ASCII编码,可读文本格式
    • 包含头尾标记:-----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----
    • 可同时存储证书、私钥和证书链
  • 扩展名:.pem.crt.cer.key
  • 典型场景:
    • Apache/Nginx等Linux服务器
    • Docker/Kubernetes配置
    • OpenVPN证书
  • 示例内容:
代码语言:javascript
复制
-----BEGIN CERTIFICATE-----
MIIFajCCBFKgAwIBAgISBEBR8n... (Base64编码数据)
-----END CERTIFICATE-----
2.DER格式 (Distinguished Encoding Rules)
  • 特点:
    • 二进制格式,不可直接阅读
    • ASN.1标准的二进制编码
    • 无头尾标记
  • 扩展名:.der.cer
  • 典型场景:
    • Java应用(Java密钥库通常使用DER)
    • Windows系统内部处理
  • 与PEM关系:DER是PEM的二进制原始形式
3. PKCS#7 / P7B格式
  • 特点:
    • 证书链专用格式(不含私钥)
    • 支持Base64或二进制编码
    • 遵循RFC 2315标准
  • 扩展名:.p7b.p7c
  • 典型场景:
    • Windows证书导入/导出
    • Tomcat服务器证书链
  • 结构示例:
代码语言:javascript
复制
证书1 (服务器证书)
↓ 
证书2 (中间CA)
↓ 
证书3 (根CA)
4. PKCS#12 / PFX格式
  • 特点:
    • 安全容器格式(可包含证书+私钥+证书链)
    • 支持密码保护(加密存储私钥)
    • 二进制格式
  • 扩展名:.p12.pfx
  • 典型场景:
    • Windows IIS服务器
    • 客户端身份认证证书
    • 证书迁移(跨平台传输)

二、特殊格式

5. JKS格式 (Java KeyStore)
  • 特点:
    • Java专属密钥库二进制格式
    • 可存储证书和私钥
    • 依赖Java的keytool管理
  • 扩展名:.jks
  • 典型场景:Tomcat/Spring Boot等Java应用
6. CER/CRT格式
  • 注意:
    • 非独立格式!仅文件扩展名
    • .cer可能是PEM或DER
    • .crt通常是PEM格式(Linux常见)

证书格式对比总结

格式

扩展名

是否含私钥

编码方式

适用场景

PEM

.pem, .crt, .key

✅(通常分开)

Base64 文本

Nginx, Apache, Linux

DER

.der, .cer

❌(仅证书)

二进制

Java, Windows

PKCS#7/P7B

.p7b, .p7c

❌(不含私钥)

Base64 文本

Windows IIS, Java

PKCS#12/PFX

.pfx, .p12

二进制(加密)

Windows, Tomcat

JKS

.jks

二进制(Java 专用)

Java 应用

三、证书常见格式转换

1. pem转pfx

1.1 将pem格式证书转换成pfx格式,并设置私钥密码为123456

代码语言:javascript
复制
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.pem -certfile ca-chain.pem -passout pass:123456

1.2 查看pfx证书内容

代码语言:javascript
复制
openssl pkcs12 -in certificate.pfx -passin pass:123456 -passout pass:123456

2. pfx转pem

2.1 从pfx证书中提取私钥和pem证书

代码语言:javascript
复制
openssl pkcs12 -in certificate.pfx -nocerts -nodes -out key.pem  # 私钥
openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out certificate.pem  # 证书

2.2 查看私钥的内容:

代码语言:javascript
复制
openssl rsa -in key.pem -text -noout

2.3 查看pem格式证书内容:

代码语言:javascript
复制
openssl x509 -in certificate.pem -text -noout

3. pem转der

3.1 将pem格式证书转换成der格式证书

代码语言:javascript
复制
openssl x509 -in certificate.pem -inform PEM -out certificate.der -outform DER

3.2 查看der格式证书内容:

代码语言:javascript
复制
openssl x509 -in certificate.der -inform der -text -noout

4. der转pem

4.1 der格式证书转pem格式证书

代码语言:javascript
复制
openssl x509 -in certificate.der -inform DER -out certificate.pem -outform  PEM

4.2 查看pem格式证书内容:

代码语言:javascript
复制
openssl x509 -in certificate.pem -text -noout

5. pem转p7b

5.1 pem格式证书转p7b格式证书

代码语言:javascript
复制
openssl crl2pkcs7 -nocrl -certfile chain.pem -out chain.p7b

5.2 查看p7b格式证书内容

代码语言:javascript
复制
openssl pkcs7 -in chain.p7b -inform pem -print_certs -noout -text

6. p7b转pem

6.1 p7b格式证书转pem

代码语言:javascript
复制
openssl pkcs7 -print_certs -in chain.p7b -out certificate.pem

6.2 查看pem格式证书内容:

代码语言:javascript
复制
openssl x509 -in certificate.pem -text -noout

7. pfx转jks

7.1 pfx证书转jks格式证书

代码语言:javascript
复制
keytool -importkeystore -srckeystore certificate.pfx -destkeystore keystore.jks -srcstoretype PKCS12 -deststorepass jkspass123

7.2 验证JKS内容

代码语言:javascript
复制
keytool -list -v -keystore keystore.jks -storepass jkspass123

总结:pem格式的证书是不能直接给tomcat使用的,需要转换成pfx或者jks格式,根据不同场合使用不同格式的证书,但还是希望有一天ssl证书能统一格式^_^

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT人家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、核心格式分类
  • 二、特殊格式
  • 三、证书常见格式转换
    • 1. pem转pfx
    • 2. pfx转pem
    • 3. pem转der
    • 4. der转pem
    • 5. pem转p7b
    • 6. p7b转pem
    • 7. pfx转jks
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档