ssl证书格式的转换

需求

把 ssl 证书,以 pem 结尾的证书改成 key、crt结尾。

因为我是使用的 npm(nginx proxy manager)生成的ssl证书,下载下来的证书格式全部为 pem 结尾,现在其他地方需要用到ssl证书,但不是 pem 结尾,而是要求格式为 private.key、public.crt,这前者是私钥,后者是公钥。

npm下载的证书的文件有

cert1.pem  chain1.pem  fullchain1.pem  privkey1.pem

它们的含义分别为:

  • cert1.pem:这是服务器证书,也称为公钥证书或端点证书。当客户端请求与服务器建立SSL/TLS连接时,服务器会将此证书发送给客户端以验证身份和建立安全连接。

  • chain1.pem:这是证书链(CA Bundle),其中包括根证书和中间证书。证书链用于构建完整的证书信任链,以验证服务器证书的真实性。

  • fullchain1.pem:这是服务器证书和证书链的组合。它包括服务器证书和中间证书链,但不包括根证书,因为客户端应该已经具有根证书的信任。

  • privkey1.pem:这是私钥文件,它是与服务器证书配对使用的秘密密钥。私钥文件必须保持机密,不应共享或泄露给其他人,以确保安全连接的保密性

我需要做的就是将privkey1.pem转化成privkey.key,将cert1.pem转化成public.crt

根据这个情况,linux系统终端有openssl工具,以下为转换步骤

解决办法

将cert1.pem转化成public.crt

openssl x509 -in cert1.pem -out public.crt

将privkey1.pem转化成privkey.key

尝试一:

openssl rsa -in privkey1.pem -out private.key

尝试二:

如果出现了错误,具体原因为 加密算法不是 RSA,除此RSA外,还有 EC、DSA等,

使用EC密钥算法,最后成功

openssl ec -in privkey1.pem -out private.key

read EC key
writing EC key