Configurazione di TLS per un'applicazione in Azure

Importante

Servizi cloud (versione classica) è ora deprecato per i nuovi clienti e verrà ritirato il 31 agosto 2024 per tutti i clienti. Le nuove distribuzioni devono usare il nuovo modello di distribuzione basato su Azure Resource Manager Servizi cloud di Azure (supporto "Extended").

Il protocollo TLS (Transport Layer Security), precedentemente noto come crittografia SSL (Secure Socket Layer), è il metodo più comunemente usato per proteggere i dati inviati in Internet. In questa attività comune viene illustrato come specificare un endpoint HTTPS per un ruolo Web e come caricare un certificato TLS/SSL per proteggere l'applicazione.

Nota

Le procedure in questa attività si applicano a Servizi cloud di Azure. Per Servizi app, vedere questo articolo.

In questa attività viene usata una distribuzione di produzione. Alla fine di questo argomento vengono fornite informazioni sull'uso di una distribuzione di gestione temporanea.

Leggere questo articolo se non è stato ancora creato un servizio cloud.

Passaggio 1: Ottenere un certificato TLS/SSL

Per configurare TLS per un'applicazione, è prima necessario ottenere un certificato TLS/SSL che sia stato firmato da un'Autorità di certificazione (CA), ovvero un ente di terze parti attendibile che rilascia certificati per questo scopo. Se non si ha già un certificato, è necessario ottenerne uno da un rivenditore di certificati TLS/SSL.

Il certificato deve soddisfare i requisiti seguenti per i certificati TLS/SSL in Azure:

  • Il certificato deve contenere una chiave pubblica.
  • Il certificato deve essere stato creato per lo scambio di chiave, esportabile in un file con estensione pfx (Personal Information Exchange).
  • Il nome del soggetto del certificato deve corrispondere al dominio usato per accedere al servizio cloud. Non è possibile ottenere un certificato TLS/SSL da un'Autorità di certificazione (CA) per il dominio cloudapp.net. È necessario acquistare un nome di dominio personalizzato da utilizzare per accedere al servizio. Quando si richiede un certificato da una CA, il nome del soggetto del certificato deve corrispondere al nome di dominio personalizzato utilizzato per accedere all'applicazione. Se ad esempio il nome di dominio personalizzato è contoso.com, il certificato da richiedere alla CA è *.contoso.com o www.contoso.com.
  • Per il certificato deve essere usata una crittografia di almeno 2048 bit.

Per eseguire delle prove, è possibile creare e usare un certificato auto firmato. Un certificato autofirmato non è autenticato tramite una CA e può usare il dominio cloudapp.net come URL del sito Web. Nell'attività seguente, ad esempio, viene usato un certificato autofirmato in cui il nome comune è sslexample.cloudapp.net.

A questo punto, è necessario includere le informazioni sul certificato nei file di definizione e configurazione del servizio.

Passaggio 2: Modificare i file di definizione e configurazione del servizio

L'applicazione deve essere configurata per utilizzare il certificato ed è necessario aggiungere un endpoint HTTPS. Di conseguenza, è necessario aggiornare i file di definizione e configurazione del servizio.

  1. Nell'ambiente di sviluppo aprire il file di definizione del servizio (CSDEF), aggiungere una sezione Certificates all'interno della sezione WebRole e includere le informazioni seguenti relative al certificato (e ai certificati intermedi):

    <WebRole name="CertificateTesting" vmsize="Small">
    ...
        <Certificates>
            <Certificate name="SampleCertificate"
                        storeLocation="LocalMachine"
                        storeName="My"
                        permissionLevel="limitedOrElevated" />
            <!-- IMPORTANT! Unless your certificate is either
            self-signed or signed directly by the CA root, you
            must include all the intermediate certificates
            here. You must list them here, even if they are
            not bound to any endpoints. Failing to list any of
            the intermediate certificates may cause hard-to-reproduce
            interoperability problems on some clients.-->
            <Certificate name="CAForSampleCertificate"
                        storeLocation="LocalMachine"
                        storeName="CA"
                        permissionLevel="limitedOrElevated" />
        </Certificates>
    ...
    </WebRole>
    

    Nella sezione Certificates è definito il nome del certificato, il relativo percorso e il nome dell'archivio in cui è situato.

    Le autorizzazioni (attributopermissionLevel) possono essere impostate su uno dei seguenti valori:

    Valore di autorizzazione Descrizione
    limitedOrElevated (Predefinito) Tutti i processi di ruolo possono accedere alla chiave privata.
    elevato Solo i processi con autorizzazioni elevate possono accedere alla chiave privata.
  2. Nel file csdef aggiungere un elemento InputEndpoint all'interno della sezione Endpoints per abilitare HTTPS:

    <WebRole name="CertificateTesting" vmsize="Small">
    ...
        <Endpoints>
            <InputEndpoint name="HttpsIn" protocol="https" port="443"
                certificate="SampleCertificate" />
        </Endpoints>
    ...
    </WebRole>
    
  3. Nel file di definizione del servizio aggiungere un elemento Binding all'interno della sezione Sites. Questo elemento aggiunge un'associazione HTTPS per il mapping dell'endpoint al sito:

    <WebRole name="CertificateTesting" vmsize="Small">
    ...
        <Sites>
            <Site name="Web">
                <Bindings>
                    <Binding name="HttpsIn" endpointName="HttpsIn" />
                </Bindings>
            </Site>
        </Sites>
    ...
    </WebRole>
    

    Tutte le modifiche necessarie al file di definizione del servizio sono state completate, ma è ora necessario aggiungere le informazioni del certificato al file di configurazione del servizio.

  4. Nel file di configurazione del servizio (CSCFG), ServiceConfiguration.Cloud.cscfg, aggiungere in Certificates un valore corrispondente al proprio certificato. L'esempio di codice seguente contiene i dettagli della sezione Certificates, fatta eccezione per il valore dell'identificazione personale.

    <Role name="Deployment">
    ...
        <Certificates>
            <Certificate name="SampleCertificate"
                thumbprint="9427befa18ec6865a9ebdc79d4c38de50e6316ff"
                thumbprintAlgorithm="sha1" />
            <Certificate name="CAForSampleCertificate"
                thumbprint="79d4c38de50e6316ff9427befa18ec6865a9ebdc"
                thumbprintAlgorithm="sha1" />
        </Certificates>
    ...
    </Role>
    

Questo esempio usa sha1 come algoritmo di identificazione personale. Specificare il valore appropriato per l'algoritmo di identificazione personale del certificato in uso.

Ora che i file di definizione e configurazione del servizio sono stati aggiornati, creare il pacchetto della distribuzione per il caricamento in Azure. Se si usa cspack, non usare il flag /generateConfigurationFile, poiché questo sovrascriverebbe le informazioni del certificato appena inserite.

Passaggio 3: Caricare un certificato

Connettersi al portale di Azure e...

  1. Nella sezione Tutte le risorse del portale selezionare il servizio cloud.

    Publish your cloud service

  2. Fare clic su Certificati.

    Click the certificates icon

  3. Fare clic su Carica nella parte superiore dell'area dei certificati.

    Click the Upload menu item

  4. Specificare il file e la password, quindi fare clic su Carica nella parte inferiore dell'area di immissione di dati.

Passaggio 4: Connettersi all'istanza del ruolo usando HTTPS

Ora che la distribuzione è in esecuzione in Azure, è possibile connettersi a questa usando HTTPS.

  1. Fare clic sull'URL del sito per aprire il Web browser.

    Click the Site URL

  2. Nel Web browser modificare il collegamento per usare https invece di http, quindi accedere alla pagina.

    Nota

    Se si usa un certificato autofirmato, quando si passa a un endpoint HTTPS con il certificato autofirmato associato, è possibile che nel browser venga visualizzato un errore del certificato. L'uso di un certificato firmato da un'Autorità di certificazione attendibile eliminerà il problema. Nel frattempo l'errore può essere ignorato. Un'altra opzione consiste nell'aggiungere il certificato autofirmato nell'archivio certificati dell'Autorità di certificazione attendibile dell'utente.

    Site preview

    Suggerimento

    Se si desidera usare TLS per una distribuzione di staging anziché di produzione, è necessario innanzitutto determinare l'URL usato per la distribuzione di staging. Una volta distribuito il servizio cloud, l'URL dell'ambiente di gestione temporanea è determinato dal GUID ID distribuzione nel formato seguente: https://deployment-id.cloudapp.net/

    Creare un certificato con il nome comune (CN) uguale all'URL basato su GUID, ad esempio,328187776e774ceda8fc57609d404462.cloudapp.net. Usare il portale per aggiungere il certificato al servizio cloud di gestione temporanea. Aggiungere le informazioni del certificato ai file CSDEF e CSCFG, ricreare il pacchetto dell'applicazione e aggiornare la distribuzione di gestione temporanea per usare il nuovo pacchetto.

Passaggi successivi