问题描述
证书与密钥服务云产品支持将第三方生成的证书上传至云平台,进行统一存储与管理,有效提高证书运维效率。但是,当上传Let’s Encrypt颁发的证书时,可能提示“证书链和证书无法构成完整的一条链,请确认后重试”。
问题原因
证书与密钥服务云产品要求所上传证书的证书链正确且完整,而Let’s Encrypt颁发的证书,在下载后证书包中证书链信息可能是不正确的,需要手动处理后再上传。
在Let’s Encrypt颁发的证书中,证书包内包含文件如下:
cert.pem:所申请的服务器证书,可以直接上传至“上传证书”对话框的“证书内容”参数中。
privkey.pem:服务器证书所对应的私钥文件。该私钥文件为通用PEM格式,需参考 当上传证书时提示私钥格式校验失败,如何排查解决 转换为对应算法格式后,再上传至“上传证书”对话框的“证书私钥”参数中。
chain.pem:签发服务器证书的CA证书链。该证书链中根CA的证书可能不正确,需获取正确根CA的证书,再上传至“上传证书”对话框的“证书链”参数中。
fullchain.pem:包含签发服务器证书的CA证书链和服务器证书。
解决方案
通过文本编辑器打开chain.pem文件,依次将该文件中以 —–BEGIN CERTIFICATE—– 开头,并最小范围内以 —–END CERTIFICATE—– 结尾的一段内容,复制到一个独立文件中,且命名为 chain-X.crt 格式,以作为一个CA证书。
提取Let’s Encrypt CA证书。依次双击打开上述CA证书,以确认Let’s Encrypt的证书文件,该CA证书内容即为所上传证书的证书链部分内容。
下文将介绍两种常见操作系统确认Let’s Encrypt证书文件的具体方法,请根据实际操作环境执行对应操作:
提取根CA证书。根CA文件内容即为所上传证书的证书链剩余内容。下文将介绍两种常见操作系统的具体提取方法,请根据实际操作环境执行对应操作:
Mac操作系统:
在本地计算机中,打开“钥匙串访问”窗口。之后,在左导航中选择 [系统根证书],并在页面上方选择 [证书]页签,进入“证书”页面。
在 ISRG Root X1 所在行右键单击后,在右键菜单中选择
导出“ISRG Root X1”
,将其存储至本地(文件格式请选择“增强保密邮件(.pem)”)。
Windows操作系统:
在本地计算机中,通过按
Win
+R
键,打开“运行”窗口。之后,输入“certmgr.msc”,进入“证书”页面。在左侧导航栏中,选择 [受信任的根证书颁发机构]-[证书]后,在右侧显示页面中右键单击 ISRG Root X1 所在行后,在右键菜单中选择
所有任务
-导出
后,按提示将其导出存储至本地(文件格式请选择“Base64 编码 X.509(.CER)(S)”)。
“上传证书”对话框中“证书链”参数的值即为 Let’s Encrypt CA证书文件内容 + 根CA证书文件内容 ,二者之间通过换行分隔开即可。