Configurazione di SSL per un'applicazione in AzureConfiguring SSL for an application in Azure

La crittografia SSL (Secure Socket Layer) è il metodo più diffuso per proteggere i dati inviati tramite Internet.Secure Socket Layer (SSL) encryption is the most commonly used method of securing data sent across the internet. In questa attività comune viene illustrato come specificare un endpoint HTTPS per un ruolo Web e come caricare un certificato SSL al fine di proteggere l'applicazione.This common task discusses how to specify an HTTPS endpoint for a web role and how to upload an SSL certificate to secure your application.

Nota

Le procedure in questa attività si applicano a Servizi cloud di Azure. Per Servizi app, vedere questo articolo.The procedures in this task apply to Azure Cloud Services; for App Services, see this.

In questa attività viene usata una distribuzione di produzione.This task uses a production deployment. Alla fine di questo argomento vengono fornite informazioni sull'uso di una distribuzione di gestione temporanea.Information on using a staging deployment is provided at the end of this topic.

Leggere questo articolo se non è stato ancora creato un servizio cloud.Read this first if you have not yet created a cloud service.

Passaggio 1: Ottenere un certificato SSLStep 1: Get an SSL certificate

Per configurare SSL per un'applicazione, è necessario prima ottenere un certificato SSL che sia stato firmato da un'Autorità di certificazione (CA), ovvero un ente di terze parti attendibile che rilascia certificati per questo scopo.To configure SSL for an application, you first need to get an SSL certificate that has been signed by a Certificate Authority (CA), a trusted third party who issues certificates for this purpose. Se non se ne dispone già, è necessario ottenerne uno da un rivenditore di certificati SSL.If you do not already have one, you need to obtain one from a company that sells SSL certificates.

Il certificato deve soddisfare i requisiti seguenti per i certificati SSL in Azure:The certificate must meet the following requirements for SSL certificates in Azure:

  • Il certificato deve includere una chiave privata.The certificate must contain a private key.
  • Il certificato deve essere stato creato per lo scambio di chiave, esportabile in un file con estensione pfx (Personal Information Exchange).The certificate must be created for key exchange, exportable to a Personal Information Exchange (.pfx) file.
  • Il nome del soggetto del certificato deve corrispondere al dominio usato per accedere al servizio cloud.The certificate's subject name must match the domain used to access the cloud service. Non è possibile ottenere un certificato SSL da un'Autorità di certificazione (CA) per il dominio cloudapp.net.You cannot obtain an SSL certificate from a certificate authority (CA) for the cloudapp.net domain. È necessario acquistare un nome di dominio personalizzato da utilizzare per accedere al servizio.You must acquire a custom domain name to use when access your service. 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.When you request a certificate from a CA, the certificate's subject name must match the custom domain name used to access your application. Se ad esempio il nome di dominio personalizzato è contoso.com, il certificato da richiedere alla CA è .contoso.com* o **www.contoso.com.For example, if your custom domain name is contoso.com you would request a certificate from your CA for .contoso.com* or **www.contoso.com.
  • Per il certificato deve essere usata una crittografia di almeno 2048 bit.The certificate must use a minimum of 2048-bit encryption.

Per eseguire delle prove, è possibile creare e usare un certificato auto firmato.For test purposes, you can create and use a self-signed certificate. Un certificato autofirmato non è autenticato tramite una CA e può usare il dominio cloudapp.net come URL del sito Web.A self-signed certificate is not authenticated through a CA and can use the cloudapp.net domain as the website URL. Nell'attività seguente, ad esempio, viene usato un certificato autofirmato in cui il nome comune è sslexample.cloudapp.net.For example, the following task uses a self-signed certificate in which the common name (CN) used in the certificate is sslexample.cloudapp.net.

A questo punto, è necessario includere le informazioni sul certificato nei file di definizione e configurazione del servizio.Next, you must include information about the certificate in your service definition and service configuration files.

Passaggio 2: Modificare i file di definizione e configurazione del servizioStep 2: Modify the service definition and configuration files

L'applicazione deve essere configurata per utilizzare il certificato ed è necessario aggiungere un endpoint HTTPS.Your application must be configured to use the certificate, and an HTTPS endpoint must be added. Di conseguenza, è necessario aggiornare i file di definizione e configurazione del servizio.As a result, the service definition and service configuration files need to be updated.

  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):In your development environment, open the service definition file (CSDEF), add a Certificates section within the WebRole section, and include the following information about the certificate (and intermediate certificates):

     <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.The Certificates section defines the name of our certificate, its location, and the name of the store where it is located.

    Le autorizzazioni (attributopermisionLevel) possono essere impostate su uno dei seguenti valori:Permissions (permisionLevel attribute) can be set to one of the following values:

    Valore di autorizzazionePermission Value DescrizioneDescription
    limitedOrElevatedlimitedOrElevated (Predefinito) Tutti i processi di ruolo possono accedere alla chiave privata.(Default) All role processes can access the private key.
    elevatedelevated Solo i processi con autorizzazioni elevate possono accedere alla chiave privata.Only elevated processes can access the private key.
  2. Nel file csdef aggiungere un elemento InputEndpoint all'interno della sezione Endpoints per abilitare HTTPS:In your service definition file, add an InputEndpoint element within the Endpoints section to enable 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.In your service definition file, add a Binding element within the Sites section. Questo elemento aggiunge un'associazione HTTPS per il mapping dell'endpoint al sito:This element adds an HTTPS binding to map the endpoint to your site:

     <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.All the required changes to the service definition file have been completed; but, you still need to add the certificate information to the service configuration file.

  4. Nel file di configurazione del servizio (CSCFG), ServiceConfiguration.Cloud.cscfg, aggiungere in Certificates un valore corrispondente al proprio certificato.In your service configuration file (CSCFG), ServiceConfiguration.Cloud.cscfg, add a Certificates value with that of your certificate. L'esempio di codice seguente contiene i dettagli della sezione Certificates, fatta eccezione per il valore dell'identificazione personale.The following code sample provides details of the Certificates section, except for the thumbprint value.

     <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.(This example uses sha1 for the thumbprint algorithm. Specificare il valore appropriato per l'algoritmo di identificazione personale del certificato in uso.Specify the appropriate value for your certificate's thumbprint algorithm.)

Ora che i file di definizione e configurazione del servizio sono stati aggiornati, creare il pacchetto della distribuzione per il caricamento in Azure.Now that the service definition and service configuration files have been updated, package your deployment for uploading to Azure. Se si usa cspack, non usare il flag /generateConfigurationFile, poiché questo sovrascriverebbe le informazioni del certificato appena inserite.If you are using cspack, don't use the /generateConfigurationFile flag, as that will overwrite the certificate information you just inserted.

Passaggio 3: Caricare un certificatoStep 3: Upload a certificate

Connettersi al portale di Azure e...Connect to the Azure portal and...

  1. Nella sezione Tutte le risorse del portale selezionare il servizio cloud.In the All resources section of the Portal, select your cloud service.

    Pubblicare il servizio cloud

  2. Fare clic su Certificati.Click Certificates.

    Fare clic sull'icona dei certificati

  3. Fare clic su Carica nella parte superiore dell'area dei certificati.Click Upload at the top of the certificates area.

    Scegliere la voce di menu Carica

  4. Specificare il file e la password, quindi fare clic su Carica nella parte inferiore dell'area di immissione di dati.Provide the File, Password, then click Upload at the bottom of the data entry area.

Passaggio 4: Connettersi all'istanza del ruolo usando HTTPSStep 4: Connect to the role instance by using HTTPS

Ora che la distribuzione è in esecuzione in Azure, è possibile connettersi a questa usando HTTPS.Now that your deployment is up and running in Azure, you can connect to it using HTTPS.

  1. Fare clic sull'URL del sito per aprire il Web browser.Click the Site URL to open up the web browser.

    Fare clic sull'URL del sito

  2. Nel Web browser modificare il collegamento per usare https invece di http, quindi accedere alla pagina.In your web browser, modify the link to use https instead of http, and then visit the page.

    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.If you are using a self-signed certificate, when you browse to an HTTPS endpoint that's associated with the self-signed certificate you may see a certificate error in the browser. L'uso di un certificato firmato da un'Autorità di certificazione attendibile eliminerà il problema. Nel frattempo l'errore può essere ignorato.Using a certificate signed by a trusted certification authority eliminates this problem; in the meantime, you can ignore the error. Un'altra opzione consiste nell'aggiungere il certificato autofirmato nell'archivio certificati dell'Autorità di certificazione attendibile dell'utente.(Another option is to add the self-signed certificate to the user's trusted certificate authority certificate store.)

    Anteprima del sito

    Suggerimento

    Se si desidera utilizzare SSL per una distribuzione di gestione temporanea anziché di produzione, è necessario innanzitutto determinare l'URL usato per la distribuzione di gestione temporanea.If you want to use SSL for a staging deployment instead of a production deployment, you'll first need to determine the URL used for the staging deployment. 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/Once your cloud service has been deployed, the URL to the staging environment is determined by the Deployment ID GUID in this format: https://deployment-id.cloudapp.net/

    Creare un certificato con il nome comune (CN) uguale all'URL basato su GUID, ad esempio,328187776e774ceda8fc57609d404462.cloudapp.net.Create a certificate with the common name (CN) equal to the GUID-based URL (for example, 328187776e774ceda8fc57609d404462.cloudapp.net). Usare il portale per aggiungere il certificato al servizio cloud di gestione temporanea.Use the portal to add the certificate to your staged cloud service. 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.Then, add the certificate information to your CSDEF and CSCFG files, repackage your application, and update your staged deployment to use the new package.

Passaggi successiviNext steps