所以我在Azure Service Fabric上托管了一个Web Api,我想通过https公开它.
第一个问题:Microsoft提供的* .cloudapp.azure.com的默认证书是否与App Service类似?
如果没有,我如何拥有一个我不拥有的域的有效证书(由知名CA颁发)?
如果它在某种程度上可能,我想我需要将此证书上传到Azure Vault并在服务清单中引用其指纹对吗?
我是否应该使用相同的证书来保护集群并公开SSL端点?
谢谢!
解决方法
* .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模板(to get it installed on your nodes).
要使用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配置中的cert:
<Endpoints> <Endpoint Name="ServiceEndpoint" Type="Input" Protocol="https" Port="443" CertificateRef="Cert1"/> </Endpoints>
您可以使用相同的证书来保护您的群集并向用户提供SSL,但我建议您使用不同的证书,这样您就不会将服务器证书分发给客户端以进行群集身份验证.
编辑:也可以使用支持SSL卸载的Azure Application Gateway.然后它将处理HTTPS方面并将HTTP与群集通信