2016-05-02 8 views
6

So habe ich eine Web-API auf Azure Service Fabric gehostet, die ich über HTTPS verfügbar machen möchte.Stateless Web API auf Azure Service Fabric über https

Erste Frage: Gibt es tatsächlich ein Standardzertifikat für * .cloudapp.azure.com, das von Microsoft ähnlich dem App Service bereitgestellt wird?

Wenn nicht, wie kann ich ein gültiges Zertifikat (ausgestellt von einer bekannten CA) für eine Domain, die ich nicht besitze?

Falls es irgendwie möglich ist, nehme ich an, ich müsste dieses Zertifikat in den Azure Vault hochladen und seinen Fingerabdruck im Service-Manifest rechts referenzieren?

Soll ich das gleiche Zertifikat zum Sichern des Clusters und zum Aussetzen von SSL-Endpunkten verwenden?

Danke!

Antwort

9

Es gibt kein Wildcard-Zertifikat für * .cloudapp.azure.com wie für * .azurewebsites.net. Für SSL müssen Sie Ihre eigene Domain registrieren und entweder mit Ihrer Cluster-Domain CNAME (z. B. mycluster.westus.cloudapp.azure.com) oder eine statische öffentliche IP-Adresse für Ihre VIP-Load-Balancer-IP erhalten und auf Ihren A-Record verweisen dass (more on public IPs in Azure here). Dann kaufen Sie ein Zertifikat für diese Domäne von Ihrer bevorzugten Zertifizierungsstelle.

Sobald Sie ein Zertifikat haben, ja Sie speichern, dass in Key Vault (stellen Sie sicher, dass Sie setzen -EnabledForDeployment, wenn Sie Ihren Key Vault erstellen!) Und setzte sich in Ihrem Cluster ARM-Vorlage (to get it installed on your nodes).

HTTPS zu verwenden, eine erste Referenz cert in ApplicationManifest.xml einzurichten:

<Certificates> 
    <EndpointCertificate X509FindValue="<Your Certificate Thumbprint>" Name="Cert1" /> 
</Certificates> 

Dann einen EndpointBindindPolicy im ServiceManifestImport Abschnitt Anwendungsmanifest einzurichten:

<ServiceManifestImport> 
... 
    <Policies> 
     <EndpointBindingPolicy EndpointRef="ServiceEndpoint" CertificateRef="Cert1" /> 
    </Policies> 
</ServiceManifestImport> 

Und schließlich verweisen Sie auf das Zertifikat in Ihrer Endpoint-Konfiguration in ServiceManifest.xml:

<Endpoints> 
    <Endpoint Name="ServiceEndpoint" Type="Input" Protocol="https" Port="443" CertificateRef="Cert1"/> 
</Endpoints> 

Sie können verwenden die gleiche cert Ihr Cluster zu sichern und SSL für die Nutzer, aber ich würde eine andere cert empfehlen, so dass Sie nicht Ihre Server-Zertifikat an Clients für Cluster-Authentifizierung Austeilen.

EDIT: Man könnte auch Azure Application Gateway verwenden, die SSL-Offloading unterstützt. Dann würde es die HTTPS-Aspekte behandeln und HTTP zurück zum Cluster sprechen

+0

Große Antwort, danke – Helikaon

+0

Wenn der Dienst nicht aktiviert werden kann, nachdem Sie diese Schritte ausführen, ist einer der Gründe, wenn Sie den Fingerabdruck von MMC kopieren kopiert einige unsichtbare Symbole am Anfang der Zeichenfolge, geben Sie sie einfach manuell ein oder kopieren Sie sie zunächst in einen einfachen Editor wie den Editor – ShadowCode

+0

Dieser Tipp für das Azure Application Gateway ist vielleicht das Beste, was ich seit einiger Zeit gesehen habe Rollover und Fingerabdrücke ersetzt .. Service Fabric nicht "netsh http sslcert" aus dem Port abmelden und dann beschwert es ist bereits in Verwendung .. Ich werde untersuchen mit Azure Application Gateway für die Verwendung von SSL Offloading – rfcdejong