国密证书(通常是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`命令即可。