证书格式说明

CDN只支持上传PEM格式的证书和私钥,针对不同证书颁发机构的证书,对证书内容的上传有不同的要求。

Root CA机构颁发的证书

Root CA机构颁发的证书是唯一的,一般包括Apache、IIS、Nginx和Tomcat。阿里云CDN使用的证书是Nginx,包含后缀为.crt(证书)和后缀为.key(私钥)的这两个文件。

进入Nginx文件夹,使用文本编辑器打开.crt文件,您可以看到与下图格式相似的PEM格式的证书内容。

图 1. PEM格式证书PEM格式证书

PEM格式证书

  • 以“-----BEGIN CERTIFICATE-----”开头,以“-----END CERTIFICATE-----”结尾。

  • 每行64个字符,最后一行可以不足64个字符。

证书上传要求

  • 请将以“-----BEGIN CERTIFICATE-----”开头和以“-----END CERTIFICATE-----”结尾的内容一并上传。

  • 每行64个字符,最后一行可以不足64个字符。

中级机构颁发的证书

中级机构颁发的证书文件包含多份证书,配置HTTPS时,您需要将服务器证书与中间证书拼接成一份完整的证书后再上传。拼接后的证书如下图所示。

图 2. 拼接后的PEM格式证书拼接后的PEM格式证书

证书链格式

中级机构颁发的证书链格式如下:

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

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

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

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

拼接规则

通过文本编辑器打开所有*.PEM格式的证书文件,将服务器证书放在第一位,中间证书放在第二位,证书之间不能有空行。通常情况下,证书颁发机构颁发证书时会有对应的说明,请注意查阅规则说明。

RSA私钥格式要求

私钥扩展名一般为.pem.key,在文本编辑器中打开私钥文件,您可以看到与下图格式相似的私钥内容。

图 3. RSA格式私钥RSA格式私钥

私钥PEM格式

  • 以“-----BEGIN RSA PRIVATE KEY-----”开头,“-----END RSA PRIVATE KEY-----”结尾。

  • 每行64个字符,最后一行可以不足64个字符。

私钥上传要求

上传RSA私钥之前,您需要通过openssl genrsa -out privateKey.pem 2048在本地先生成私钥,privateKey.pem为您的私钥文件。

  • 请将以“-----BEGIN RSA PRIVATE KEY-----”开头和以“-----END RSA PRIVATE KEY-----”结尾的内容一并上传。

  • 每行64个字符,最后一行可以不足64个字符。

如果您得到的是以“-----BEGIN PRIVATE KEY-----”开头,以“-----END PRIVATE KEY-----”结尾的私钥,您需要使用OpenSSL工具执行以下命令进行转换,然后将new_server_key.pem的内容与证书一起上传。

openssl rsa -in old_server_key.pem -out new_server_key.pem

证书格式转换方式

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

说明
  • CRT后缀文件是Certificate的简称,可能是PEM编码格式,也可能是DER编码格式。进行证书格式转换前请仔细确认您的证书格式是否需要转换。

  • PEM(Privacy Enhanced Mail)一般为文本格式,以 “-----BEGIN ***-----”开头,以 “-----END ***-----”结尾,中间的内容是Base64编码。这种格式可以保存证书和私钥,为了区分证书与私钥,一般会将PEM格式的私钥后缀改为.key

  • DER转换为PEM

    DER格式一般出现在Java平台中。

    • 证书转换:

      openssl x509 -inform der -in certificate.cer -out certificate.pem
    • 私钥转换:

      openssl rsa -inform DER -outform pem -in privatekey.der -out privatekey.pem
  • P7B转换为PEM

    P7B格式一般出现在Windows Server和Tomcat中。

    • 证书转换:

      openssl pkcs7 -print_certs -in incertificat.p7b -out outcertificate.cer

      获取outcertificate.cer里面的-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----的内容作为证书进行上传。

    • 私钥转换:

      P7B证书无私钥,您只需在CDN控制台填写证书部分,私钥无需填写。

  • PFX转换为PEM

    PFX格式一般出现在Windows Server中。

    • 证书转换:

      openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
    • 私钥转换:

      openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes