我有一个网站在 AppEngine 上以一个域名运行,SSL 按预期工作。但是,我切换到另一个域名,我无法让 SSL 工作。
当我去上传证书时,它提示我输入“PEM 编码的 X.509”证书文件和“未加密的 PEM 编码的 RSA”私钥文件。
对于最后一个域,我只需插入 CRT 和私钥。此密钥在顶部显示“-----BEGIN PRIVATE KEY-----”,并不表示它是 RSA 密钥,但没关系。如果它很重要,我使用命令行生成了密钥/CSR:
openssl req -new -nodes -keyout abc.com.key -out abc.com.csr -newkey rsa:2048
但是,对于这个新域,我将提供 CRT(实际上是 CRT 和 IA 按此顺序连接)和密钥文件。密钥没有密码,它们似乎都是 PEM 格式的(标准的、编码的、ASCII 文件,对吗?)。
但是,我收到一个错误:“私钥和 SSL 证书都应该是未加密的 PEM 格式。” 上次没有发生这种情况。
另一个网站说我需要运行以下命令来生成 AppEngine 可以使用的密钥:
openssl rsa -in abc.com.key -text > abc.com.key.pem
但是,我不知道这两种格式的区别,新文件的顶部有模数、指数、素数和系数,然后是“BEGIN RSA PRIVATE KEY BLOCK”。话虽如此,我现在可以上传原始 CRT 和这个新的密钥文件。
这是我的第一个问题(我不明白我在做什么,在这里)。
我的第二个问题是 IA 证书被忽略:AppEngine 表明我只上传了一个证书(我在某处看到它应该指示两个证书)。当我分别上传 IA 和新密钥时,我收到错误:“上传的私钥与 SSL 证书不匹配。请上传匹配的密钥。”
显然,后者是更大的错误。我从 Python 收到一些 SSL 验证错误,但不是来自浏览器。
我将不胜感激有关此事的任何建议。
不管以前版本的 Admin 是什么情况,如果它实际上已经改变,我们必须运行上面的第二个命令(“openssl rsa -in abc.com.key -text > abc.com.key .pem”)。
我对所读内容的解释是不正确的。当上传的是普通证书和 IA 证书串联时,AppEngine 只会指示已使用一个证书槽。
AppEngine 应用更改(在所有系统中)也有长达一小时的延迟。
我相信传播延迟与浏览器中的一些缓存相结合会产生相当不一致的结果。
使用“openssl s_client abc.com -servername abc.com”,我看到了更真实的结果,并且还可以看到链中已经配置了两个证书,正如预期的那样。