国密证书(通常是SM2算法)的文件格式,核心识别方法与通用X.509证书类似,主要通过文件内容和扩展名来判断。而格式转换,除了通用的OpenSSL工具,也常用专门的`gmssl`命令行工具。
一、如何识别证书格式?
识别证书格式最可靠的方法是查看其内容,文件扩展名(如`.pem`, `.crt`, `.cer`)仅作参考。
1. 使用文本编辑器打开文件:用记事本等工具打开证书文件。
2. 观察内容:
PEM格式:文件内容是以`-----BEGIN CERTIFICATE-----`开头,以`-----END CERTIFICATE-----`结尾的文本。这是最常见、最通用的格式。
DER格式:文件内容是二进制的,用文本编辑器打开会显示为乱码。
3. 检查文件扩展名(作为辅助参考):
`.pem`:通常就是PEM格式。
`.crt` / `.cer`:可能是PEM格式,也可能是DER格式。
二、如何进行格式转换?
国密证书的格式转换,关键在于使用正确的工具。对于使用SM2算法的国密证书,推荐使用`gmssl`命令;对于使用RSA算法的证书,可使用通用的`openssl`命令。
核心转换场景
场景一:PEM与CRT互转
由于CRT格式可能是PEM或DER编码,转换方法稍有不同。
PEM (.pem) 转 CRT (.crt)
如果确认是PEM格式,最简单的办法是直接重命名文件。
或者,使用命令行工具:
bash
使用 gmssl (适用于SM2国密证书)
gmssl x509 -inform pem -in your_cert.pem -outform pem -out your_cert.crt
使用 openssl (适用于RSA证书)
openssl x509 -in your_cert.pem -out your_cert.crt
CRT (.crt) 转 PEM (.pem)
如果CRT文件是DER编码(二进制),需要指定输入格式。
同样,也可以**直接重命名**文件(前提是该CRT文件本身就是PEM编码)。
使用命令行工具:
bash
如果CRT是DER格式,转为PEM
gmssl x509 -inform der -in your_cert.crt -outform pem -out your_cert.pem
或使用 openssl
openssl x509 -inform DER -in your_cert.crt -out your_cert.pem
场景二:PEM与DER互转
PEM(文本)和DER(二进制)是两种最基础的编码格式。
DER转PEM:
bash
gmssl x509 -inform der -in your_cert.cer -outform pem -out your_cert.pem
PEM转DER:
bash
gmssl x509 -inform pem -in your_cert.pem -outform der -out your_cert.cer
场景三:PFX/P12与PEM互转
PFX/P12是包含证书和私钥的二进制格式。
PFX/P12转PEM:
bash
openssl pkcs12 -in your_cert.pfx -out your_cert.pem -nodes
PEM转PFX/P12:
bash
openssl pkcs12 -export -in your_cert.pem -inkey your_key.key -out your_cert.pfx
此外,也有一些在线工具提供国密证书的格式转换服务,例如SSLeye的在线SM2国密工具。
注意事项
国密双证书:国密标准通常要求部署“双证书”:
签名证书:用于身份验证。
加密证书:用于密钥交换。
部署时需准备两对证书及对应的私钥,共4个文件。
私钥处理:转换格式时,需注意私钥的分离与保护。
工具选择:处理SM2算法证书时,务必使用支持国密算法的`gmssl`工具;处理RSA算法证书时,可使用通用的`openssl`工具。
总之,识别国密证书格式,关键是看文件内容是否为Base64文本;进行格式转换时,根据证书算法(SM2或RSA)选择`gmssl`或`openssl`命令即可。