2016-05-02 23 views
6

Così ho un Web Api ospitato su Azure Service Fabric che vorrei esporre tramite https.Api Web senza stato su Servizio di assistenza di Azure su https

Prima domanda: esiste effettivamente un certificato predefinito per * .cloudapp.azure.com fornito da Microsoft simile al servizio app?

Se non c'è, come posso avere un certificato valido (rilasciato da una CA ben nota) per un dominio che non possiedo?

Nel caso sia in qualche modo possibile, suppongo che dovrei caricare questo certificato su Azure Vault e fare riferimento all'identificazione personale nel manifest di servizio giusto?

Devo usare lo stesso certificato per proteggere il cluster ed esporre gli endpoint SSL?

Grazie!

risposta

9

Non esiste un certificato jolly per * .cloudapp.azure.com come per * .azurewebsites.net. Per SSL è necessario registrare il proprio dominio e CNAME sul dominio del cluster (ad esempio, mycluster.westus.cloudapp.azure.com) oppure ottenere un IP pubblico statico per il servizio di bilanciamento del carico VIP e puntare il record A in quello (more on public IPs in Azure here). Quindi acquista un certificato per quel dominio dalla tua CA preferita.

volta che hai un cert, sì si memorizzare che a Key Vault (assicuratevi di impostare -EnabledForDeployment quando si crea la chiave di Volta!) E mettere che nel modello di cluster ARM (to get it installed on your nodes).

Per utilizzare HTTPS, prima impostare un riferimento CERT in ApplicationManifest.xml:

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

Quindi impostare un EndpointBindindPolicy nella sezione ServiceManifestImport di Applicazione manifesto:

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

Infine, fai riferimento al certificato nella tua configurazione di Endpoint in ServiceManifest.xml:

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

È possibile utilizzare lo stesso CERT per garantire la sua cluster e fornire SSL per gli utenti, ma mi sento di raccomandare un cert diversa, in modo che non stai distribuendo il tuo cert server ai client per l'autenticazione cluster.

MODIFICA: È possibile utilizzare anche Azure Application Gateway che supporta la ripartizione del carico di lavoro SSL. Quindi gestirà gli aspetti HTTPS e restituirà HTTP al cluster

+0

Ottima risposta, grazie – Helikaon

+0

Se il servizio non è in grado di attivare dopo aver eseguito questa procedura, uno dei motivi è quando si copia l'identificazione personale da MMC ne copia alcuni simboli invisibili all'inizio della stringa, basta inserirlo manualmente o prima copia in un semplice editor come Notepad – ShadowCode

+0

Il suggerimento per accedere ad Azure Application Gateway potrebbe essere il migliore che ho visto per un po ', che casino quando un certificato deve sostituzioni di rollover e thumbprint. Service Fabric non annulla la registrazione di "netsh http sslcert" dalla porta e si lamenta che è già in uso. Verrà esaminato utilizzando Azure Application Gateway per l'utilizzo di Offloading SSL – rfcdejong

Problemi correlati