我正在尝试为Google Cloud的App Engine配置SSL。您可以在GCP中上传自己的自定义SSL证书+私钥(请参见屏幕截图)。
我将Cloudflare用于DNS,并且想在Cloudflare中使用“完全(严格)” SSL策略。这意味着我必须在GCP中添加由Cloudflare创建的证书和密钥(在同一屏幕截图中)。
我设法将私钥转换为GCP可以接受的有效(PEM)格式。唯一不起作用的是证书部分。
在GCP中输入证书和密钥时,单击“上传”后,将返回以下错误:
The certificate data is invalid. Please ensure that the private key and public certificate match.
经过一番谷歌搜索后,我在GCP的文档中找到了以下资源,解释说我需要在certificate字段中上传完整的证书链。所以下次我试过的事情,是Concat的从与CloudFlare的共同我的证书根证书的CloudFlare本身的,如GCP文档解释。因此,我运行了以下命令来创建此链:
cat domain.crt cloudflare-root-ca.crt > concat.crt
...,然后将其上传到GCP的证书字段中。
即使如GCP docs所述,私钥和证书链的校验和都匹配,也不能运行以下命令:
openssl x509 -noout -modulus -in concat.crt | openssl md5
openssl rsa -noout -modulus -in myserver.key.pem | openssl md5
...并比较md5输出。
所以现在我完全没有Idea's。GCP的错误信息仅限于上述一种,另一种则表示您的PK不是有效格式。
通过cli尝试此过程时gcloud
,我们会遇到相同的错误。尝试以下命令:
gcloud app ssl-certificates create --display-name example.com --certificate ./cloudflare-concat.crt --private-key cloudflare-pk.key
...产生以下错误:
ERROR: (gcloud.app.ssl-certificates.create)
INVALID_ARGUMENT: Invalid certificate.
`CertificateRawData` must contain a PEM encoded x.509 public key certificate, with header and footer included,
and an unencrypted PEM encoded RSA private key, with header and footer included and with size at most 2048 bits.
The requested private key and public certificate must match.
我们非常感谢您提供有关在GCP中上传有效证书(来自Cloudflare)和私钥的帮助。
我发现此页面(缓存的页面)描述了Cloudflare的所有根证书和中间证书。我已经尝试了其中的一些来连接我的域证书,但是到目前为止还没有运气。还不清楚使用哪个...
我开始认为这永远不会奏效。因为我使用的是Cloudflare的“原始证书”,所以我认为这是Cloudflare本身的自签名证书,这意味着App Engine永远不会将其视为有效。
我认为是这种情况,是因为我尝试使用cfssl
cloudflare中的工具自动“创建捆绑包证书”。我从跑步中得到的回应
cfssl bundle -cert domain.crt
返回以下结果:
[INFO] bundling certificate for {Country:[] Organization:[CloudFlare, Inc.] OrganizationalUnit:[CloudFlare Origin CA] Locality:[] Province:[] StreetAddress:[] PostalCode:[] SerialNumber: CommonName:CloudFlare Origin Certificate Names:[{Type:2.5.4.10 Value:CloudFlare, Inc.} {Type:2.5.4.11 Value:CloudFlare Origin CA} {Type:2.5.4.3 Value:CloudFlare Origin Certificate}] ExtraNames:[]}
{"code":1220,"message":"x509: certificate signed by unknown authority"}
我发现了最近的一篇博客文章,描述了如何解决此问题。按照说明的步骤操作后,该证书在Google Cloud中被接受,并且一切都对cloudflare中的“完全(严格)ssl”选项起作用!
简而言之:如博客文章中所述,通过手动向其中添加“ RSA”来对密钥进行一些调整。
看到这个链接:https : //blog.woohoosvcs.com/2019/11/running-google-app-engine-behind-cloudflare/
编辑:这可能与使用@Andrei描述的shell命令的最终结果相同
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句