CDN只支持上传PEM格式的证书和私钥,针对不同证书颁发机构的证书,对证书内容的上传有不同的要求。
Root CA机构颁发的证书
Root CA机构颁发的证书是唯一的,一般包括Apache、IIS、Nginx和Tomcat。阿里云CDN使用的证书是Nginx,包含后缀为.crt
(证书)和后缀为.key
(私钥)的这两个文件。
进入Nginx文件夹,使用文本编辑器打开.crt
文件,您可以看到与下图格式相似的PEM格式的证书内容。
PEM格式证书
以“-----BEGIN CERTIFICATE-----”开头,以“-----END CERTIFICATE-----”结尾。
每行64个字符,最后一行可以不足64个字符。
证书上传要求
请将以“-----BEGIN CERTIFICATE-----”开头和以“-----END CERTIFICATE-----”结尾的内容一并上传。
每行64个字符,最后一行可以不足64个字符。
中级机构颁发的证书
中级机构颁发的证书文件包含多份证书,配置HTTPS时,您需要将服务器证书与中间证书拼接成一份完整的证书后再上传。拼接后的证书如下图所示。
证书链格式
中级机构颁发的证书链格式如下:
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
拼接规则
通过文本编辑器打开所有*.PEM格式的证书文件,将服务器证书放在第一位,中间证书放在第二位,证书之间不能有空行。通常情况下,证书颁发机构颁发证书时会有对应的说明,请注意查阅规则说明。
RSA私钥格式要求
私钥扩展名一般为.pem
或.key
,在文本编辑器中打开私钥文件,您可以看到与下图格式相似的私钥内容。
私钥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