5

我正在尝试将使用 ZeroSSL.com 页面为 Let's Encrypt 创建的 ssl 证书安装到 Google Cloud Platform 中。我按照免费 SSL 证书向导这样做。ZeroSSL页面在这个过程中会生成四个文件: domain-crt.txt domain-key.txt account-key.txt domain-csr.txt

谷歌云平台要求提供两个文件: PEM 编码的 X.509 公钥证书 未加密的 PEM 编码的 RSA 私钥

我已经做了所有的组合,并遵循了我在网上可以找到的所有建议,但我没有成功。

4

2 回答 2

5

我向 zeroSSL 的人询问了这个问题,Alexander 用解决方案回答了我。

SSL 证书向导默认生成更长更安全的 4096 位密钥,但 Google 只接受 2048 位密钥。因此,您应该首先使用https://zerossl.com/free-ssl/#csr上的 CSR 生成器单独生成新的 CSR ,并确保选择 2048 位。然后下载生成的密钥和 CSR(请注意,这是域密钥,而不是 LE 密钥),然后使用与您最初使用的相同的 LE 密钥和这个带有 SSL 证书向导的新 CSR。在最后一个向导步骤中,您可能需要将 domain-crt.txt 文件一分为二。---BEGIN CERTIFICATE----- 和 ---END CERTIFICATE----- 之间的第一部分将进入“公钥证书”字段。最后,将 domain-key.txt 的内容粘贴到“Private key”字段中。

于 2016-09-22T19:48:10.520 回答
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 。点击Upload a new SSL certificate

在文本编辑器中打开这些 PEM 文件,然后复制/粘贴字段中的内容。(fullchain.pem是公钥。 unencrypted_key.pem是未加密的私钥。)

注意:确保删除任何尾随空格或换行符!

那应该这样做。

调试:

如果,当您将证书粘贴到 GAE 设置页面时,您会收到invalid错误消息:

  • 确保删除任何尾随换行符或空格!

  • 如果它仍然不接受您的 PEM 文件,请将代码替换为unencrypted_key.pem原始代码privkey.pem

如果您收到自制错误:

$ cd /usr/local/Library
$ sudo git pull origin master

如果得到 augeas 错误:

$ brew install augeas

如果得到警告:augeas-1.4.0 已经安装,它只是没有链接

$ sudo brew link augeas

如果 ExecutableNotFound:

$ brew install dialog

如果得到警告: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 设置并按照上述说明进行安装。

于 2016-09-22T20:31:23.443 回答