所以我在Azure Service Fabric上托管了一个Web Api,我希望通过https公开。
第一个问题:Microsoft提供的* .cloudapp.azure.com的默认证书是否与App Service类似?
如果没有,我如何获得我不拥有的域的有效证书(由知名CA颁发)?
如果有可能,我想我需要将此证书上传到Azure Vault并在服务清单中引用其指纹吗?
我是否应该使用相同的证书来保护群集并公开SSL端点?
谢谢!
答案 0 :(得分:11)
* .cloudapp.azure.com没有通配符证书,就像* .azurewebsites.net一样。对于SSL,您必须注册自己的域并将其CNAME到您的群集域(例如,mycluster.westus.cloudapp.azure.com),或者为您的负载均衡器VIP获取静态公共IP并将您的A记录指向(more on public IPs in Azure here)。然后从您最喜欢的CA购买该域名的证书。
获得证书后,是的,您将把它存储在密钥保管库中(确保在创建密钥保管库时设置 -EnabledForDeployment !)并将其放入群集ARM模板中({ {3}})。
要使用HTTPS,首先在 ApplicationManifest.xml 中设置证书引用:
<Certificates>
<EndpointCertificate X509FindValue="<Your Certificate Thumbprint>" Name="Cert1" />
</Certificates>
然后在 Application Manifest 的ServiceManifestImport部分中设置EndpointBindindPolicy:
<ServiceManifestImport>
...
<Policies>
<EndpointBindingPolicy EndpointRef="ServiceEndpoint" CertificateRef="Cert1" />
</Policies>
</ServiceManifestImport>
最后,在 ServiceManifest.xml 中引用您的Endpoint配置中的证书:
<Endpoints>
<Endpoint Name="ServiceEndpoint" Type="Input" Protocol="https" Port="443" CertificateRef="Cert1"/>
</Endpoints>
您可以使用相同的证书来保护您的群集并向用户提供SSL,但我建议使用不同的证书,这样您就不会将服务器证书分发给客户端以进行群集身份验证。
编辑:还可以使用支持SSL卸载的to get it installed on your nodes。然后它将处理HTTPS方面并将HTTP与群集进行对话