📅  最后修改于: 2023-12-03 15:10:28.109000             🧑  作者: Mango
PEM 文件格式是一种用于存储加密和证书等数据的常见格式。旧的 PEM 格式定义了一种处理密钥文件时可能遇到的一些问题,多数情况下这些问题都能够轻松地被修复。本文将讲解一些旧 PEM 格式的腻子以及如何解决它们。
PEM (Privacy Enhanced Mail)格式是一种用于加密和基于证书的安全通信的文件格式。它通常包含加密机密数据、证书和公钥等信息。PEM 格式被广泛应用于 TLS/SSL 传输协议,用于证书和密钥的交换和存储。
在旧的 PEM 格式中,私钥和证书编码的开头和结尾可能存在额外的字符,如下所示:
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDB/8wzDZNL/5+F5RaeIrSAB/M8aXTN9QvO4NRLYf4pwA8cBf0x
hqMjp0hTYQbI8W7nk9k0pCjqmsLDYiKRwIDAQABAoGBANC1RxF5/ZS97qxS29oL8
2X9AzKt1q4YqzUDH8h6/dLFgkljPQ2eCaWUsG8a9CKLN/ZccpCf+nm1b7NUH0ZKj
7rcsF6RCiE6I8jyT9V6UJiQYClFzs/k41xLIaBu/7aPIr/x3qVNDjKXNlOufOcvN
AxcYjKze+2xKZ7z1AkEA3q3+VtdYEYPsn1XAkF+egJ37Yow7VhbATn+uA7VnChLg
C6EynUHjI9fPRPsmAfIHgUXXwxyJvZLd/N0FWzgBCQJBAPW8hEr0Xe7+xHE0+NBK
hzWLiNvJpo5O5C5S5e5dME8tQ240cit/4KIWLt4GnfY8l7W9gBDnLHSCKDGJz+wB
2wECQFCvklhC/dFOHCHAOJ4tMrq9xEyTIMYC2Ke5FAoL4zS07wnt+Z5CNJ44epem
Ws/AJ23ixIJkXteBJenNlO+2020CQQC3q/ySZvzCGQfNpyBct+RGmtn78gXmFmT7
IpYIosvyDKzVZJ/tg0+7+r+pI6je2Q+b6X9P6TAtH7YUF1WTkzV7AkBsANCZnIwe
ieSrF/KdJlnLeXOAiBR+N+B1bALYnGBrLq3zg1Sz2Q+vmlzC+ctt4q3tjsjvJT19
/5xdFHuzKT8l
-----END RSA PRIVATE KEY-----
留意头和尾上的换行符或者空格,只要有些许变化,就将导致文件无法解析读取。
PEM 文件采用 BASE64 编码。在旧版本的 OpenSSL 中,加密密钥和证书文件可能会采用不正确的编码方式,例如 UTF-8 而非 ASCII 码,这可能导致读取失败。
PEM 文件通常由多个 ITEM(即 BEGIN...END 包含的内容)组成,但在某些情况下,该文件的末尾可能不包含 “\n”,这会导致“有缺损的 PEM 文件”的问题。
遇到上述问题时,需要进行如下修复:
PEM 文件中的多余字符可通过使用以下命令轻松移除:
openssl rsa -in privateKey.pem -out newPrivateKey.pem
请更换“privateKey.pem”为相应文件的实际名称,并用同样的方式处理证书。 确认新文件不包含多余字符后,即可使用该文件。
如果 PEM 文件采用了错误的编码方式,请尝试使用以下命令:
openssl private key -in privateKey.pem -out newPrivateKey.pem -inform pem -outform pem
该命令将强制采用正确的编码方式。
若该 PEM 文件的结尾缺少换行符,请加上换行符以修复该问题。