配置HTTPS证书后您才能通过HTTPS方式访问资源,实现HTTPS安全加速。HTTPS配置仅支持上传PEM格式的证书和私钥内容,不同证书颁发机构对证书内容的上传有不同的要求。本文介绍阿里云CDN支持的证书格式和不同证书格式的转换方式。

Root CA机构颁发的证书

Root CA机构颁发的证书是唯一的,一般包括Apache、IIS、Nginx和Tomcat。阿里云CDN使用的证书是Nginx,包含后缀为.crt(证书)和后缀为.key(私钥)的这两个文件。进入Nginx文件夹,使用文本编辑器打开.crt.key文件,您可以看到与下图格式相似的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-----

-----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

      获取outcertificat.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