Google App Engine SSL with Let's Encrypt "could not be inserted"

Google App Engine SSL with Let's Encrypt "could not be inserted"

当尝试 "Add a new SSL certificate" 使用通过 Google App Engine 控制台使用 Let's Encrypt 生成的 App Engine 设置选项卡时,会导致对话框错误和对 POST 请求的 400 响应.

错误
"The SSL certificate provided could not be inserted."

以前生成的(大约 2 个月前 - 当然还没有过期)SSL key/certificate 通过完全相同的方法插入就好了 - 但任何新生成的都不会。我尝试了传统的 Let's Encrypt 和相对较新的 Certbot 方法。还尝试了多个子域、裸域、单域,每个都导致相同的错误。

我见过几个人指定 --rsa-key-size 2048 解决了同样的问题,但我也尝试指定它(即使它是 Certbot 的默认设置)。其他答案是 "waiting 2 hours and now its working" - 寻找真正的解决方案,因为不可靠的插入和过期的证书会成为真正的痛苦。

我 运行 几周前尝试使用我之前成功使用的相同配方上传我的新证书时也遇到了类似的问题。

最终对我有用的是:

  • 将证书文件的全部内容复制粘贴到标记为 Or paste the public key certificate in the box below:
  • 的框中

并且

  • 将私钥 .pem 文件末尾的完整密钥复制粘贴到标记为 Or paste the RSA private key in the box below: 的框中(尽管我不记得是否包括了前导 -----BEGIN RSA PRIVATE KEY----- 和拖尾 -----END RSA PRIVATE KEY----- 行或不)。

我(有点盲目地)对 2 个复制粘贴操作中的每一个都进行了多次尝试,无论我想到什么 - success/failure 反馈是即时的。

旁注 - 您可能还想仔细检查您的证书,在我的情况下,我成功上传的第一个证书文件是一个不完整的文件(缺少中间实体),它在我的桌面上似乎工作正常,但是从 Android 浏览时失败了,我不得不重新生成另一个。我使用 digicert 来确认问题并验证第二个证书(当然是根据 SO 答案的建议;)

如果您在 Apache 中使用 certbot,它默认为 4096。因此强制密钥长度为 2048。

certbot-auto --rsa-key-size 2048 From docs [https://certbot.eff.org/docs/using.html]

这会在 /etc/letsencrypt/live/example.net

中创建 PEM 证书

转换为 RSA(将 cmd 中的 url 更改为您的站点)。

sudo openssl rsa -inform pem -in /etc/letsencrypt/live/example.net/privkey.pem -outform pem > rsaprivatekey.pem

以上命令来自此博客post http://blog.seafuj.com/lets-encrypt-on-google-app-engine。这也解释了如何设置您的 webapp2 网络服务器。

转到 App Engine > 设置 > SSL 证书

上传fullchain.pem 上传 rsaprivatekey.pem

文件上传按钮工作正常 - 除非更安全,否则无需粘贴。

我遇到了这个问题。我在 Google Cloud Shell.

中生成了证书

我最初尝试使用 fullchain.pem,但这没有用。

/etc/letsencrypt/live/mydomain.com/cert.pem

我发了 sudo less /etc/letsencrypt/live/whysaurus.com/cert.pem 在 google 云 shell 中,并将其作为 pem 509 证书上传到 Appengine,然后它被接受了。