使用ZeroSSL和Let's Encrypt为Google App Engine创建SSL证书

5
我正在尝试将使用ZeroSSL.com页面创建的Let's Encrypt SSL证书安装到Google Cloud Platform中。我按照免费SSL证书向导进行操作。在此过程中,ZeroSSL页面生成了四个文件: - domain-crt.txt - domain-key.txt - account-key.txt - domain-csr.txt
Google Cloud Platform需要两个文件: - PEM编码的X.509公钥证书 - 未加密的PEM编码RSA私钥
我已经尝试了所有组合,并遵循了网上找到的所有建议,但是都没有成功。
2个回答

5
我向zeroSSL的工作人员询问了这个问题,Alexander给出了解决方案。
SSL证书向导默认生成更长更安全的4096位密钥,但Google只接受2048位密钥。因此,您应该先使用CSR生成器在https://zerossl.com/free-ssl/#csr上单独生成新的CSR,并确保选择2048位。然后下载生成的密钥和CSR(请注意,这是域密钥,而不是LE密钥),然后将与SSL证书向导使用的相同LE密钥和这个新的CSR一起使用。 在向导的最后一步,您可能需要将domain-crt.txt文件分成两部分。第一部分在---BEGIN CERTIFICATE-----和---END CERTIFICATE-----之间的内容将放入“公钥证书”字段中。 最后,将domain-key.txt的内容粘贴到“私钥”字段中。

我不是很清楚,您能否请逐步说明一下?我已经得到了CSR,但之后您提到的内容我不是很明白。 - Thusila Bandara

2
您可以通过命令行免费完成此操作:
安装Certbot客户端:
$ sudo brew install wget
$ wget https://dl.eff.org/certbot-auto
$ chmod a+x ./certbot-auto
$ ./certbot-auto --help

然后,要生成证书:
$ cd certbot (if not already there)
$ sudo ./certbot-auto certonly --debug -a manual -d www.yoursite.com -d yoursite.com (<--if you want naked too.)

您应该进入一个屏幕,告诉您需要验证域名的挑战URL和响应。添加每个并部署。保留每个URL工作。(它们将用于续订。) 如果您同时使用裸域和www域,您需要两次执行挑战URL,一次为每个子域。 最后,您应该收到此消息:
恭喜!您的证书和链已保存在/etc/letsencrypt/live/www.yoursite.com/fullchain.pem。您的证书将于2016年xx月07日到期。要在将来获取新的或修改过的证书,请再次运行certbot-auto。要非交互式地更新所有证书,请运行“certbot-auto renew”。
更改目录到放置pem文件的位置:
$ cd /private/etc/letsencrypt/live/www.yoursite.com

创建未加密的密钥(这是您上传到GAE的密钥。如果失败,请使用原始privkey.pem):
$ sudo openssl rsa -in privkey.pem -out unencrypted_key.pem

前往:https://console.cloud.google.com/appengine/settings/certificates?project=yoursite,点击上传新的SSL证书
在文本编辑器中打开这些PEM文件,并将内容复制/粘贴到字段中(fullchain.pem是公钥,unencrypted_key.pem是未加密的私钥)。
注意:确保删除任何尾随空格或换行符!
完成后即可。
调试:
如果您将证书粘贴到GAE设置页面时出现无效错误:
- 确保删除任何尾随换行符或空格! - 如果仍然无法接受您的PEM文件,请用原始privkey.pem代码替换unencrypted_key.pem代码。
如果出现homebrew错误:
$ cd /usr/local/Library
$ sudo git pull origin master

如果出现augeas错误:

$ brew install augeas

如果出现警告:已安装augeas-1.4.0,但未链接

$ sudo brew link augeas

如果找不到可执行文件:

$ brew install dialog

如果出现“Warning: dialog-1.2-20150920 已安装,但未链接”的提示,这意味着已经安装了该软件包,但尚未进行链接。

$ sudo brew link dialog

续订:

$ cd certbot
$ ./certbot-auto certonly --debug --force-renew -a manual -d www.yoursite.com -d yoursite.com

(您可能会收到“无法访问...”错误,但证书仍然已创建。) 切换到放置 pem 文件的目录:

$ cd /private/etc/letsencrypt/live/www.yoursite.com

创建未加密的密钥(这是您上传到 GAE 上的密钥。如果失败,请使用原始的 privkey.pem):

$ sudo openssl rsa -in privkey.pem -out unencrypted_key.pem

fullchain.pem 是公钥。
unencrypted_key.pem 是未加密的私钥。

前往 GAE 设置并按照上述说明安装。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接