更新时间:2023-09-12 GMT+08:00

HTTPS证书要求

HTTPS配置仅支持PEM格式的证书/私钥内容上传,针对不同的证书颁发机构,对证书/私钥内容的上传有不同的要求。

Root CA机构颁发的证书

Root CA机构颁发的证书是一份完整的证书,配置HTTPS时,仅上传该证书即可。

通过记事本打开*.PEM格式的证书文件,可以查看到类似图1所示的全部证书信息。

PEM格式证书:

  • 以证书链“-----BEGIN CERTIFICATE-----”开头,以证书链“-----END CERTIFICATE-----”结尾。
  • 证书链之间的内容,要求每行64个字符,最后一行允许不足64个字符。
  • 证书内容不包含空格。
图1 PEM格式证书

中级CA机构颁发的证书

中级机构颁发的证书文件包含多份证书,配置HTTPS时,需要将所有证书拼接在一起组成一份完整的证书后再上传。拼接后的证书类似图2

通过记事本打开所有*.PEM格式的证书文件,将服务器证书放在首位,再放置中间证书。一般情况下,机构在颁发证书的时候会有对应说明,请注意查阅相关规则。通用的规则如下:
  • 证书之间没有空行。
  • 证书链的格式如下:

    -----BEGIN CERTIFICATE-----

    -----END CERTIFICATE-----

    -----BEGIN CERTIFICATE-----

    -----END CERTIFICATE-----

图2 拼接后的PEM证书

RSA私钥格式要求

PEM格式的文件可以存放证书或私钥,如果*.PEM只包含私钥,一般用*.KEY代替。

通过记事本打开*.PEM或*.KEY的私钥文件,可以查看到类似图3所示的全部私钥信息。

RSA格式私钥:

  • 以证书链“-----BEGIN RSA PRIVATE KEY-----”开头,以证书链“-----END RSA PRIVATE KEY-----”结尾。
  • 证书链之间的内容,要求每行64个字符,最后一行允许不足64个字符。
  • 证书内容不包含空格。
图3 RSA格式私钥

当私钥的证书链带有“-----BEGIN PRIVATE KEY-----, -----END PRIVATE KEY-----”或者“-----BEGIN ENCRYPTED PRIVATE KEY-----, -----END ENCRYPTED PRIVATE KEY-----”信息时,需要使用OpenSSL工具执行以下命令进行转换:

openssl rsa -in old_key.pem -out new_key.pem

格式转换

配置HTTPS仅支持PEM格式的证书/私钥,其他格式均不支持。其他格式的证书/私钥需要转换成PEM格式,建议通过OpenSSL工具进行转换。下面是几种比较流行的证书格式转换为PEM格式的方法。

以下示例均假设转换前证书名为old_certificate,私钥名为old_key,转换后证书名为new_certificate,私钥文件名为new_key。

  • DER转换为PEM
    openssl x509 -inform der -in old_certificate.cer -out new_certificate.pem
    openssl rsa -inform DER -outform pem -in old_key.der -out new_key.pem
  • P7B转换为PEM
    openssl pkcs7 -print_certs -in old_certificate.p7b -out new_certificate.cer
  • PFX转换为PEM
    openssl pkcs12 -in old_certificat.pfx -nokeys -out new_certificate.pem
    openssl pkcs12 -in old_certificat.pfx -nocerts -out new_key.pem

若需要将PKCS8格式私钥转换为PKCS1格式,则参考如下方法:

openssl rsa -in old_certificat.pem -out pkcs1.pem