带有 Let's Encrypt 的 Google App Engine SSL“无法插入”
Posted
技术标签:
【中文标题】带有 Let\'s Encrypt 的 Google App Engine SSL“无法插入”【英文标题】:Google App Engine SSL with Let's Encrypt "could not be inserted"带有 Let's Encrypt 的 Google App Engine SSL“无法插入” 【发布时间】:2016-11-14 03:29:19 【问题描述】:当尝试使用通过 Google App Engine 的控制台使用 Let's Encrypt 生成的 App Engine 的设置选项卡“添加新的 SSL 证书”时,会导致对话框错误和对 POST 请求的 400 响应。
错误 "无法插入提供的 SSL 证书。"
之前生成的(大约 2 个月前 - 当然还没有过期)通过完全相同的方法插入的 SSL 密钥/证书很好 - 但任何新生成的都没有。我尝试了传统的 Let's Encrypt 和相对较新的 Certbot 方法。还尝试了多个子域、裸域、单个域,每个都导致相同的错误。
我见过几个人指定 --rsa-key-size 2048 解决了同样的问题,但我也尝试过指定它(即使它是 Certbot 的默认设置)。其他答案是“等待 2 小时,现在它可以工作了”——寻找真正的解决方案,因为不可靠的插入和过期的证书可能会成为一个真正的痛苦。
【问题讨论】:
也可能有帮助***.com/q/69023723/892318 【参考方案1】:如果你在 Apache 中使用 certbot,它默认为 4096。所以强制密钥长度为 2048。
certbot-auto --rsa-key-size 2048 来自文档 [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
以上命令来自这篇博文http://blog.seafuj.com/lets-encrypt-on-google-app-engine。这也解释了如何设置你的 webapp2 网络服务器。
转到 App Engine > 设置 > SSL 证书
上传 fullchain.pem 上传 rsaprivatekey.pem
文件上传按钮工作正常 - 除非更安全,否则无需粘贴。
【讨论】:
在我的情况下,2017 年 6 月 RSA 私钥 rsa2.pem 是问题openssl rsa -in privkey.pem -out rsa2alt.pem
,使用该字段的输出解决了问题。我怀疑这与 intotecho 的答案重叠,所以在这里添加评论(fullchain.pem 可以作为公钥)。【参考方案2】:
几周前,我在尝试使用我之前成功使用的相同配方上传新证书时也遇到了类似的问题。
最后对我有用的是:
将证书文件的全部内容复制粘贴到标有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 次复制粘贴操作中的每一次进行了几次尝试,无论我想到什么 - 成功/失败反馈是即时的。
旁注 - 您可能还需要仔细检查您的证书,在我的情况下,我成功上传的第一个证书文件是不完整的(缺少中间实体),在我的桌面上似乎可以正常工作,但是从 android 浏览时失败,我不得不重新生成另一个。我使用digicert 确认问题并验证第二个证书(当然是遵循 SO 答案的建议;)
【讨论】:
深夜中的一个 - 在我处理 Google 的控制台以及它如何打印出证书的过程中,这是我最后的时刻。但是,如果没有您的评论,我就不会专注于复制粘贴的细节。终于成功了,谢谢鼓励:)【参考方案3】:我遇到了这个问题。我在 Google Cloud Shell 中生成了证书。
我第一次尝试使用 fullchain.pem,但这不起作用。
/etc/letsencrypt/live/mydomain.com/cert.pem
我发布了 sudo less /etc/letsencrypt/live/whysaurus.com/cert.pem 在谷歌云外壳中,并将其作为 pem 509 证书上传到 appengine 中,然后被接受。
【讨论】:
【参考方案4】:在 Cloud Shell、GCP 和 "openssl" 和 "gcloud" 上,我尝试创建 一个自我管理的 SSL 证书首先运行下面这个命令来创建 "myCert.crt" 和 "myKey.key":
openssl req -new -newkey rsa:4096 -x509 -days 365 -nodes -out myCert.crt -keyout myKey.key
然后,运行以下命令以使用 "myCert.crt" 和 "myKey.key"自我管理的 SSL 证书“mycert” /strong>:
gcloud compute ssl-certificates create mycert --certificate=myCert.crt --private-key=myKey.key
但是我收到了这个错误:
错误:(gcloud.compute.ssl-certificates.create)无法获取 资源:
SSL 密钥太大。
所以我将 "rsa:4096" 更改为 "rsa:2048" 然后再次运行第一个命令:
// "4096" is changed to "2048"
openssl req -new -newkey rsa:2048 -x509 -days 365 -nodes -out myCert.crt -keyout myKey.key
然后,再次运行第二个命令:
gcloud compute ssl-certificates create mycert --certificate=myCert.crt --private-key=myKey.key
最后,我可以创建自我管理的 SSL 证书“mycert”:
创建 [https://www.googleapis.com/compute/v1/projects/myproject-923743/global/sslCertificates/mycert]。 名称:mycert 类型:SELF_MANAGED CREATION_TIMESTAMP: 2022-01-22T07:22:26.058-08:00 EXPIRE_TIME: 2023-01-22T07:22:08.000-08:00 MANAGED_STATUS:
【讨论】:
以上是关于带有 Let's Encrypt 的 Google App Engine SSL“无法插入”的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Service Fabric 配置 Let's Encrypt 证书?
使用 Let's Encrypt 保护 GitLab 页面得到 404
设置 Let's encrypt with Go - 握手错误