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