本教程将介绍如何在Google Cloud Platform上使用Certificate Manager安装SSL证书。您还将学习如何为Google Cloud生成CSR(证书签名请求),以及如何将证书部署到HTTPS负载均衡器。
在Google Cloud Platform上生成CSR代码
没有CSR代码,您无法订购SSL证书。CSR代表证书签名请求(Certificate Signing Request),是一段包含申请人信息的编码文本块。证书颁发机构在签发证书之前会使用CSR来验证您的域名和组织信息。
Google Cloud没有内置的表单来为您创建CSR,因此您需要在自己的计算机上使用OpenSSL生成CSR及其私钥。您有两种选择:
- 使用我们的CSR生成器自动生成CSR。
- 按照我们的分步教程了解如何在Google Cloud Platform上创建CSR。
请妥善保管私钥。当您将证书上传到Certificate Manager时,还会需要用到它。在订购过程中将CSR提交给证书颁发机构,证书签发后,请继续下面的安装步骤。
在Google Cloud Platform上安装SSL证书
在Google Cloud上,第三方(自行提供的)证书被称为自管理证书。您需要将其上传到Certificate Manager,然后部署到HTTPS负载均衡器。开始之前,请确保您已具备:
- 从证书颁发机构获取的已签名证书文件。
- 您在生成CSR时创建的私钥。
- 可访问Google Cloud控制台和gcloud CLI。
- 一个已存在的、为您的域名提供服务的HTTPS负载均衡器(带有目标HTTPS代理的外部应用负载均衡器)。证书将附加到此负载均衡器上。
步骤1:准备证书文件
证书颁发机构验证您的请求后,会通过电子邮件发送一个ZIP压缩包。解压该压缩包,查找以下文件:
- yourdomain.crt,您的服务器证书。
- yourdomain.ca-bundle,中间证书。
- yourdomain.key,您在生成CSR时创建的私钥。
步骤2:合并证书和证书链
Certificate Manager需要一个PEM文件,其中先包含您的服务器证书,然后按顺序包含中间证书。在存放这些文件的文件夹中打开终端并运行:
cat yourdomain.crt yourdomain.ca-bundle > fullchain.crt
这样即可创建一个PEM格式文件,其中包含您的证书和按正确顺序排列的中间证书链。证书文件必须以—–BEGIN CERTIFICATE—–开头,并以—–END CERTIFICATE—–结尾。
现在检查私钥。Certificate Manager要求私钥必须:
- 采用PEM格式且未加密(无密码短语)。
- 采用PKCS#8格式,即以—–BEGIN PRIVATE KEY—–开头,而不是—–BEGIN RSA PRIVATE KEY—–。
- 为RSA(2048、3072或4096位)或ECDSA(P-256或P-384)。
如果您的私钥以—–BEGIN RSA PRIVATE KEY—–(PKCS#1)开头,请将其转换为Certificate Manager接受的PKCS#8格式:
openssl pkcs8 -topk8 -nocrypt -in yourdomain.key -out yourdomain_pkcs8.key
在下面的上传步骤中使用生成的yourdomain_pkcs8.key。如果您的私钥受密码短语保护,此命令还会提示您输入密码短语,并生成一个未加密的副本。
步骤3:将证书上传到Certificate Manager
您可以通过控制台或使用gcloud上传自管理证书。任选其一即可,最终结果都是同一个Certificate Manager资源。
方式A,Google Cloud控制台:
- 登录Google Cloud控制台并选择您的项目。
- 打开Certificate Manager(位于网络安全区域的安全下),然后选择证书选项卡。
- 选择添加证书。
- 为证书命名,然后在证书类型中选择创建自管理证书。
- 对于位置,如果使用全球负载均衡器,请选择全球并将范围设置为默认;如果使用区域负载均衡器,请选择区域并选择您所在的区域。
- 上传fullchain.crt作为证书,上传您的PKCS#8私钥作为私钥,然后选择创建。
方式B,gcloud CLI:通过一条命令创建相同的证书。将MY_CERT替换为您选择的名称:
gcloud certificate-manager certificates create MY_CERT
--certificate-file=fullchain.crt
--private-key-file=yourdomain_pkcs8.key
无论采用哪种方式,此时证书已存储在Certificate Manager中,但尚未与任何流量关联。下一步将进行部署。
步骤4:将证书部署到负载均衡器
Certificate Manager通过证书映射(certificate map)来部署证书。您需要创建一个映射,添加一个将主机名指向您证书的条目,然后将该映射附加到负载均衡器的目标HTTPS代理上。请使用gcloud运行以下命令。
创建证书映射:
gcloud certificate-manager maps create MY_MAP
为您的主机名添加映射条目。将MY_CERT替换为您上传的证书名称,将yourdomain.com替换为您要保护的域名:
gcloud certificate-manager maps entries create my-entry
--map=MY_MAP
--certificates=MY_CERT
--hostname=yourdomain.com
将该映射附加到您现有的目标HTTPS代理上。将MY_PROXY替换为负责您负载均衡器前端的代理名称:
gcloud compute target-https-proxies update MY_PROXY
--certificate-map=MY_MAP
--global
如果您的负载均衡器是区域性的,请去掉--global标志并添加--region=YOUR_REGION。此时,负载均衡器已开始为该主机名的入站HTTPS流量提供您的证书服务。证书更改可能需要几分钟才能在负载均衡器上完全生效。
测试您的SSL安装
部署证书后,请确认负载均衡器正确提供了该证书,且证书链完整无误。在任何安装了OpenSSL的计算机上,连接到您的域名并读取其返回的证书:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -subject -dates
此命令会打印当前使用证书的颁发者、主体以及有效期信息。如需获取有关证书及其配置的完整报告,包括证书链和协议检查,请使用我们的SSL检测工具检测您的域名,或在浏览器中打开该网站并查看锁形图标。
常见问题
不可以。Google Cloud没有可为自管理证书生成CSR或私钥的控制台表单。您需要在自己的计算机上使用OpenSSL创建CSR和私钥(或使用我们的CSR生成器),订购证书,然后将签发的证书和私钥上传到Certificate Manager。
自管理证书是您从证书颁发机构获取并自行上传的证书,续期工作由您自己负责。Google管理证书则由Google自动配置和续期。本教程介绍的是自管理证书,这也是您使用SSL Dragon付费证书时所采用的方式。
最常见的原因是密钥格式问题。Certificate Manager需要以—–BEGIN PRIVATE KEY—–开头的未加密PKCS#8密钥。如果您的密钥以—–BEGIN RSA PRIVATE KEY—–开头,或受密码短语保护,请使用openssl pkcs8 -topk8 -nocrypt -in yourdomain.key -out yourdomain_pkcs8.key进行转换,然后上传转换后的文件。
将证书上传到Certificate Manager只是存储该证书,在您完成部署之前它不会用于处理流量。请创建证书映射,为您的主机名添加映射条目,并将该映射附加到负载均衡器的目标HTTPS代理上(步骤4)。在映射附加完成之前,负载均衡器不会展示您的证书。
应先放置您的服务器(叶子)证书,然后依次放置中间证书,全部放在同一个PEM文件中。命令cat yourdomain.crt yourdomain.ca-bundle > fullchain.crt即可生成这种顺序。证书链缺失或顺序错误,是浏览器和SSL检测工具报告证书路径不完整的常见原因。


