服务器证书格式和OPENSSL使用

根据不同的服务器以及服务器的版本,我们需要用到不同的证书格式,就市面上主流的服务器来说,大概有以下格式:

X.509证书,其核心是根据RFC 5280编码或数字签名的数字文档

编码

  • .DER,文件是二进制格式,只保存证书,不保存私钥。.DER = DER扩展用于二进制DER编码证书。这些文件也可能承载CER或CRT扩展。 正确的说法是“我有一个DER编码的证书”不是“我有一个DER证书”。而且DER格式只是证书的二进制形式,而不是ASCII PEM格式。它有时会有.der的文件扩展名,但它的文件扩展名通常是.cer所以判断DER .cer文件和PEM .cer文件之间区别的唯一方法是在文本编辑器中打开它并查找BEGIN / END语句。所有类型的证书和私钥都可以用DER格式编码。
  • .PEM,一般是文本格式,可保存证书,可保存私钥。.PEM = PEM扩展用于不同类型的X.509v3文件,是证书颁发机构颁发证书的最常见格式.PEM证书通常具有扩展名,例如.pem,.crt,.cer和.key。它们是Base64编码的ASCII文件,包含“----- BEGIN CERTIFICATE -----”和“----- END CERTIFICATE -----”语句。

后缀文件

  •  CER:.crt的替代形式(Microsoft Convention)您可以在微软系统环境下将.crt转换为.cer(.both DER编码的.cer,或base64 [PEM]编码的.cer)。
  • .CRT,可以是二进制格式,可以是文本格式,不保存私钥。.CRT = CRT扩展用于证书。 证书可以被编码为二进制DER或ASCII PEM。 CER和CRT扩展几乎是同义词。 最常见的于Unix 或类Unix系统。
  • .PFX .P12,二进制格式,同时包含证书和私钥,一般有密码保护。
  • .JKS,二进制格式,同时包含证书和私钥,一般有密码保护。

DER

该格式是二进制文件内容,Java 和 Windows 服务器偏向于使用这种编码格式。

PEM

Privacy Enhanced Mail,一般为文本格式,以 -----BEGIN... 开头,以 -----END... 结尾。中间的内容是 BASE64 编码。这种格式可以保存证书和私钥,有时我们也把PEM 格式的私钥的后缀改为 .key 以区别证书与私钥。具体你可以看文件的内容。

这种格式常用于 Apache 和 Nginx 服务器。

CRT

Certificate 的简称,有可能是 PEM 编码格式,也有可能是 DER 编码格式。如何查看请参考前两种格式。

PFX

Predecessor of PKCS#12,这种格式是二进制格式,且证书和私钥存在一个 PFX 文件中。一般用于 Windows 上的 IIS 服务器。改格式的文件一般会有一个密码用于保证私钥的安全。

JKS

Java Key Storage,很容易知道这是 JAVA 的专属格式,利用 JAVA 的一个叫 keytool 的工具可以进行格式转换。一般用于 Tomcat 服务器。

你可以到这里进行格式转换:证书格式转换https://myssl.com/cert_convert.html

非对称加密

生成密钥对文件包含公钥和私钥:openssl genrsa -out test.pem 2048

提取私钥:openssl rsa -in test.pem -out test_pri.pem

提取公钥:openssl rsa -in test.pem -pubout -out test_pub.pem

私钥转非加密

openssl rsa -in rsa_aes_private.key -passin pass:111111 -out rsa_private.key

私钥转加密

openssl rsa -in rsa_private.key -aes256 -passout pass:111111 -out rsa_aes_private.key

openssl更多使用:使用 openssl 生成证书 - 美码师 - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要获取服务器和客户端的证书和私钥的pem文件,可以按照以下步骤使用openssl命令: 1. 获取服务器证书和私钥 a. 获取服务器证书的pem文件: ``` openssl s_client -connect <server_ip>:<server_port> -showcerts </dev/null 2>/dev/null|openssl x509 -outform PEM > server.crt ``` 这个命令会连接到指定的服务器端口,获取服务器证书,并将证书保存为server.crt文件。 b. 获取服务器私钥的pem文件: 如果服务器私钥已经存储在服务器上,可以使用以下命令将其导出为pem格式: ``` openssl rsa -in <path_to_private_key> -outform PEM > server.key ``` 如果服务器私钥存储在证书文件中,可以使用以下命令将其从证书中提取为pem格式: ``` openssl x509 -in server.crt -outform PEM -out server.pem -nocert openssl rsa -in server.pem -outform PEM -out server.key ``` 2. 获取客户端的证书和私钥 a. 获取客户端证书的pem文件: 如果客户端证书已经存储在客户端上,可以使用以下命令将其导出为pem格式: ``` openssl x509 -in <path_to_client_cert> -outform PEM > client.crt ``` 如果客户端证书存储在PKCS12格式的文件中,可以使用以下命令将其从PKCS12文件中提取为pem格式: ``` openssl pkcs12 -in <path_to_pkcs12_file> -clcerts -nokeys -out client.crt ``` b. 获取客户端私钥的pem文件: 如果客户端私钥已经存储在客户端上,可以使用以下命令将其导出为pem格式: ``` openssl rsa -in <path_to_client_key> -outform PEM > client.key ``` 如果客户端私钥存储在PKCS12格式的文件中,可以使用以下命令将其从PKCS12文件中提取为pem格式: ``` openssl pkcs12 -in <path_to_pkcs12_file> -nocerts -nodes -out client.key ``` 注意:在使用上述命令时,请将命令中的路径和文件名替换为实际的路径和文件名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值