2016-05-02 16 views
6

Mam więc Web Api hostowany w usłudze Azure Service Fabric, który chciałbym udostępnić przez https.Bezpaństwowe api sieci Web na platformie Azure Service Fabric przez stronę https

Pierwsze pytanie: czy rzeczywiście istnieje certyfikat domyślny dla domeny * .cloudapp.azure.com dostarczany przez firmę Microsoft podobny do usługi App Service?

Jeśli nie ma, jak mogę uzyskać ważny certyfikat (wystawiony przez znany ośrodek CA) dla domeny, która nie jest moją własnością?

W przypadku, gdy jest to możliwe, przypuszczam, że musiałbym przesłać ten certyfikat do skarbca Azure i wskazać jego odcisk kciuka w manifeście usługi?

Czy mam używać tego samego certyfikatu do zabezpieczenia klastra i ujawnienia punktów końcowych SSL?

Dzięki!

Odpowiedz

9

Brak certyfikatu typu wildcard dla * .cloudapp.azure.com, tak jak w przypadku * .azurewebsites.net. W przypadku protokołu SSL musisz zarejestrować własną domenę i CNAME go w domenie klastra (np. Mycluster.westus.cloudapp.azure.com) lub uzyskać statyczny publiczny adres IP dla swojego systemu równoważenia obciążenia VIP i wskazać swój rekord A to (more on public IPs in Azure here). Następnie kup certyfikat dla tej domeny ze swojego ulubionego urzędu certyfikacji.

Gdy masz cert, tak że będziesz przechowywać w Key Vault (zrobić podczas tworzenia klucza Vault pewno ustawić -EnabledForDeployment!) I umieścić, że w szablonie ARM klastra (to get it installed on your nodes).

Aby użyć HTTPS pierwszej konfiguracji odniesienie cert w ApplicationManifest.xml:

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

wtedy założyć EndpointBindindPolicy w sekcji ServiceManifestImport z manifest aplikacji:

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

Na koniec należy odwołać się do certyfikatu w konfiguracji punktu końcowego w ServiceManifest.xml:

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

Ty może używać tego samego cert zabezpieczyć klaster i zapewniają SSL dla użytkowników, ale polecam inny cert tak, że nie jesteś rozdawać swoje cert serwera uwierzytelniania klientów dla klastra.

EDYCJA: Można również użyć Azure Application Gateway, która obsługuje funkcję SSL Offloading. Następnie poradziłby sobie z aspektami HTTPS i rozmawiał HTTP z powrotem do klastra

+0

Świetna odpowiedź, dziękuję – Helikaon

+0

Jeśli usługa nie może zostać aktywowana po wykonaniu tych kroków, jednym z powodów jest kopiowanie odcisku palca z MMC, kopiowanie niektórych niewidzialne symbole na początku napisu, po prostu wprowadź go ręcznie lub najpierw skopiuj do prostego edytora, takiego jak Notatnik – ShadowCode

+0

Wskazówka dla przechodzenia do Azure Application Gateway może być najlepsza, jaką widziałem przez jakiś czas, co za bałagan, gdy certyfikat musi zastąpiono odbitki i odciski palców .. Usługa Fabric nie wyrejestrowuje "netsh http sslcert" z portu, a następnie narzeka, że ​​jest już używana. Zbadam, korzystając z usługi Azure Application Gateway, do korzystania z SSL Offloading. – rfcdejong

Powiązane problemy