我一直在尝试在GAE中为我的应用在子域上使用自己的SSL证书。我已经成功创建了证书,并且能够为一个子域之外的所有域启用该证书。
比方说我的域名是domain.com。我能够为domain.com,www.domain.com,subdomain.domain.com启用SSL证书,但是由于某些原因,www.subdomain.domain.com并未显示在我的证书的潜在自定义域列表中。在这种情况下,我无法通过https://www.subdomain.domain.com访问我的网站,但可以通过https://subdomain.domain.com。
此外,我可以为此子域激活一个由Google管理的证书,从而使https://www.subdomain.domain.com可以访问,但是,这当然不是我想要的。关于如何使www.subdomain.domain.com在我的证书的域列表中可见的任何线索,然后才能将其打开?
此帖子报道的问题与this one类似。可悲的是,没有人提供答案,我对此也没有足够的评价。。。
答案 0 :(得分:1)
根据Google Cloud文档,通过确保您在GCP控制台中拥有正确的权限并在所有父域中验证所有权,您可以使用自定义证书访问子域。
示例:
SignedXmlWithId signedXml = new SignedXmlWithId(doc);
signedXml.SignedInfo.SignatureMethod = "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
RSACryptoServiceProvider rsaKey = (RSACryptoServiceProvider)cert.PrivateKey;
signedXml.SigningKey = rsaKey;
signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;
Reference CertRefSign = new Reference { Uri = "#" + SecurityTokenReference };
CertRefSign.DigestMethod = "http://www.w3.org/2000/09/xmldsig#sha1";
CertRefSign.AddTransform(new XmlDsigExcC14NTransform());
signedXml.AddReference(CertRefSign);
Reference BodySign = new Reference { Uri = "#" + EnvelopeBodyId };
BodySign.DigestMethod = "http://www.w3.org/2000/09/xmldsig#sha1";
BodySign.AddTransform(new XmlDsigExcC14NTransform());
signedXml.AddReference(BodySign);
signedXml.ComputeSignature();
XmlElement signedElement = signedXml.GetXml();
ErcotHeaderSecurityXml.AppendChild(signedElement);
,则可以验证www.example.com
或www.example.com
的所有权。example.com
和www.example.com
,则可以验证sub.example.com
和www.example.com
或sub.example.com
的所有权。example.com
,则必须验证*.example.com
的所有权。您可以检查this link,主要是提到的部分
使用您自己的SSL证书
答案 1 :(得分:1)
多级域可能很棘手。从获得的证书类型开始。来自RFC 2818(重点是我):
名称可能包含通配符*,这被认为是 匹配任何单个域名组件或组件片段。 例如
*.a.com
匹配foo.a.com
,但不匹配bar.foo.a.com
。 f * .com 匹配foo.com但不匹配bar.com。
我怀疑这是造成您麻烦的原因。 Google在App Engine support for SSL certificates中也提到:
通配符证书仅支持一级子域。
尝试使用Google管理的证书时,证书很可能是针对相应域(而不是通配符域)准确生成的,因此不会出现上述引用中提到的问题。
我想想到的唯一方法是为每个域级别获取单独的通配符证书。但是,如果您将用户引导到不同域级别的站点,则可能会出现问题,因为证书会更改。
就我个人而言,我只是将我的域名安排在一个域级别中,并避免所有这些问题。也许使用www-subdomain.domain.com
之类的东西代替www.subdomain.domain.com
?