Abilitare la comunicazione HTTPS in Azure Servizi cloud (supporto esteso)
Articolo
La comunicazione con Servizi cloud di Microsoft Azure (supporto esteso) viene eseguita usando il protocollo HTTPS (Hypertext Transfer Protocol Secure). Questo articolo illustra come abilitare la comunicazione HTTPS per Servizi cloud (supporto esteso).
Passaggi generali per la distribuzione del progetto
I passaggi generali per distribuire un progetto di Servizi cloud (supporto esteso) in Azure sono i seguenti:
Preparare il certificato.
Configura il progetto.
Creare il pacchetto del file di progetto nei file di definizione del servizio (con estensione csdef), della configurazione del servizio (con estensione cscfg) e del pacchetto del servizio (con estensione cspkg) del servizio cloud.
Modificare la configurazione della risorsa Servizi cloud (supporto esteso), se necessario. Ad esempio, è possibile apportare una delle modifiche seguenti:
Aggiornare l'URL del pacchetto.
Configurare l'impostazione dell'URL.
Aggiornare l'impostazione dei segreti del sistema operativo.
Distribuire e aggiornare il nuovo progetto in Azure.
Note
Il progetto può essere distribuito tramite diversi metodi, ad esempio usando gli strumenti seguenti:
Visual Studio
Un modello di Azure Resource Manager (modello di Resource Manager)
Uno strumento di integrazione continua e recapito continuo (CI/CD), ad esempio Azure DevOps
Indipendentemente dal metodo di distribuzione, i passaggi di distribuzione generali sono gli stessi.
I primi due di questi passaggi sono necessari per tutti i metodi di distribuzione. Questi passaggi vengono illustrati nella sezione Modifiche del codice. Anche i passaggi rimanenti sono importanti, ma non richiedono sempre l'intervento manuale dell'utente. Ad esempio, i passaggi potrebbero essere eseguiti automaticamente da uno strumento come Visual Studio. Gli ultimi tre di questi passaggi sono descritti nella sezione Modifiche alla configurazione.
Modifiche al codice
Per apportare le modifiche al codice per preparare il certificato e configurare il progetto, seguire questa procedura:
Annotare l'identificazione personale del certificato (stringa esadecimale a 40 cifre).
Nel file di configurazione del servizio (con estensione cscfg) del progetto aggiungere l'identificazione personale del certificato al ruolo in cui si vuole usare il certificato. Ad esempio, se si vuole usare il certificato come certificato SSL per comunicare con un WebRole, è possibile aggiungere codice XML simile al frammento di codice seguente per WebRole1 come primo elemento figlio dell'elemento radice ServiceConfiguration :
È possibile personalizzare il nome del certificato, ma deve corrispondere al nome del certificato usato nel file di definizione del servizio (con estensione csdef).
Nel file di definizione del servizio (con estensione csdef) aggiungere gli elementi seguenti.
XPath padre
Elementi da aggiungere
Attributi da usare
/ServiceDefinition/WebRole/Sites/Site/Bindings
Binding
name, endpointName
/ServiceDefinition/WebRole/Endpoints
InputEndpoint
name, protocol, port, certificate
/ServiceDefinition/WebRole
Certificates/Certificate
name, storeLocation, storeName, permissionLevel
L'elemento Certificates deve essere aggiunto direttamente dopo il tag di chiusura Endpoints . Non contiene attributi. Contiene solo elementi figlio Certificate .
Ad esempio, il file di definizione del servizio potrebbe essere simile al codice XML seguente:
In questo esempio, il file di definizione del servizio viene modificato per associare un endpoint di input di HttpsIn per il protocollo HTTPS sulla porta 443. Usa il Certificate1 certificato per un archivio con un nome e My una posizione di LocalMachine solo per un livello di autorizzazione limitato o con privilegi elevati. I nomi dei InputEndpoint certificati negli elementi e Certificate corrispondono tra loro. Corrispondono anche al nome del certificato usato nel file di configurazione del servizio (con estensione cscfg) del passaggio precedente.
Modifiche alla configurazione
Le istruzioni per modificare la configurazione del servizio cloud variano in base alla modalità di distribuzione del servizio cloud. Queste istruzioni sono visualizzate nelle schede seguenti. Ogni scheda rappresenta un metodo di distribuzione diverso.
Caricare il pacchetto del servizio generato (<project-name.cspkg>) e i file di configurazione del servizio cloud (ServiceConfiguration.Cloud.cscfg) in un contenitore di account di archiviazione per il servizio cloud.
Note
Sarà anche necessario caricare il file di definizione del servizio (ServiceDefinition.csdef) usando lo stesso processo descritto per gli altri due file.
Generare un URL di firma di accesso condiviso (SAS) per ognuno dei file caricati.
Nella portale di Azure tornare alla pagina Panoramica del servizio cloud e quindi selezionare Aggiorna.
Nella pagina Aggiorna servizio cloud apportare le modifiche seguenti nella scheda Informazioni di base:
Nel campo Percorso di definizione pacchetto/configurazione/servizio selezionare Da BLOB.
Nel campo Caricare un pacchetto (.cspkg, .zip) seguire questa procedura:
Selezionare il collegamento Sfoglia .
Selezionare l'account di archiviazione e il contenitore in cui sono stati caricati i file.
Nella pagina contenitore selezionare il file corrispondente (in questo caso project-name.cspkg) e quindi selezionare il pulsante Seleziona. <>
Per il campo Carica una configurazione (con estensione cscfg) (e il file ServiceConfiguration.Cloud.cscfg), ripetere la sottoprocedure descritta nel passaggio precedente.
Per il campo Carica una definizione del servizio (con estensione csdef) e il file ServiceDefinition.csdef ripetere la sottoprocedure.
Selezionare la scheda Configuration (Configurazione).
Nel campo Insieme di credenziali delle chiavi selezionare l'insieme di credenziali delle chiavi in cui è stato caricato il certificato (in precedenza nella sezione Modifiche del codice). Dopo aver trovato il certificato nell'insieme di credenziali delle chiavi selezionato, il certificato elencato visualizza lo statoTrovato.
Per distribuire il progetto appena configurato, selezionare il pulsante Aggiorna .
Caricare il file del pacchetto del servizio generato (<project-name.cspkg>) in un contenitore dell'account di archiviazione per il servizio cloud.
Note
Nonostante quanto indicato nelle istruzioni, non è necessario caricare il file di configurazione del servizio cloud (ServiceConfiguration.Cloud.cscfg). Solo il file del pacchetto del servizio deve essere caricato qui.
Generare un URL di firma di accesso condiviso per il file del pacchetto del servizio caricato.
Nello script di PowerShell seguente sostituire i segnaposto all'inizio dello script con i valori effettivi per ogni variabile e quindi eseguire lo script per aggiornare il servizio cloud:
Caricare il pacchetto del servizio generato (<project-name.cspkg>) e i file di configurazione del servizio cloud (ServiceConfiguration.Cloud.cscfg) in un contenitore di account di archiviazione per il servizio cloud.
Generare un URL di firma di accesso condiviso (SAS) per ognuno dei file caricati.
Ottenere i valori seguenti dalla pagina del certificato dell'insieme di credenziali delle chiavi nella portale di Azure:
URL del certificato dell'insieme di credenziali delle chiavi
ID sottoscrizione
Nome del gruppo di risorse in cui viene distribuito l'insieme di credenziali delle chiavi
Nome del servizio per l'insieme di credenziali delle chiavi
Nel modello arm originale per il servizio cloud trovare la osProfile proprietà . Se il progetto di servizio cloud originale supporta solo la comunicazione HTTP, la osProfile proprietà è vuota ("osProfile": {}). Per consentire al servizio cloud di recuperare il certificato corretto dall'insieme di credenziali delle chiavi corretto, specificare l'insieme di credenziali delle chiavi da usare all'interno del modello di Resource Manager. È possibile usare un parametro per rappresentare questo valore. In alternativa, è possibile impostare come hardcoded il valore nel modello di Resource Manager, come illustrato nell'esempio seguente:
Nel testo JSON del modello di Resource Manager, il id valore nel sourceVault parametro fa parte dell'URL della pagina Key Vault nel portale di Azure. Il certificateUrl valore è l'URL del certificato dell'insieme di credenziali delle chiavi trovato in precedenza. I formati di testo per questi valori sono illustrati nella tabella seguente.
Distribuire il modello di Resource Manager aggiornato contenente nuovi parametri, ad esempio il token di firma di accesso condiviso del pacchetto, il token di firma di accesso condiviso di configurazione e altro ancora. Per informazioni su come dichiarare e specificare questi parametri, è possibile esaminare un file di modello di Resource Manager di esempio e un file di parametri del modello di Resource Manager di esempio. Attendere quindi il completamento della distribuzione.
Note
Se viene visualizzato un messaggio di errore che indica che viene usato l'indirizzo IP pubblico, rimuovere l'indirizzo IP pubblico dal file di configurazione del servizio (con estensione cscfg) e dal file dei parametri del modello di Resource Manager. Non rimuovere la dichiarazione di indirizzo IP pubblico dal file del modello di Resource Manager stesso.
Questa sezione descrive come usare Azure SDK e C# per apportare le modifiche di configurazione corrette. Per usare correttamente l'SDK per distribuire il progetto di servizio cloud e modificare la configurazione correlata, è necessario registrare un'applicazione in Microsoft Entra ID. Per eseguire la registrazione, vedere l'articolo Usare il portale per creare un'applicazione Microsoft Entra e un'entità servizio in grado di accedere alle risorse . Nella tabella seguente vengono descritti i passaggi specifici da eseguire e la sottosezione corrispondente da leggere in tale articolo.
Procedi
Collegamento di sottosezione
Assegnare alla sottoscrizione il ruolo di proprietario per l'applicazione
Configurare i criteri di accesso per l'insieme di credenziali delle chiavi e concedere l'autorizzazione all'applicazione (di almeno livello di lettura) per accedere al certificato
Caricare il file del pacchetto del servizio generato (<project-name.cspkg>) in un contenitore dell'account di archiviazione per il servizio cloud.
Note
Nonostante quanto indicato nelle istruzioni, non è necessario caricare il file di configurazione del servizio cloud (ServiceConfiguration.Cloud.cscfg). Solo il file del pacchetto del servizio deve essere caricato qui.
Generare un URL di firma di accesso condiviso per il file del pacchetto del servizio caricato.
Ottenere i valori seguenti dalla pagina del certificato dell'insieme di credenziali delle chiavi nella portale di Azure:
URL del certificato dell'insieme di credenziali delle chiavi
ID sottoscrizione
Nome del gruppo di risorse in cui viene distribuito l'insieme di credenziali delle chiavi
Nome del servizio per l'insieme di credenziali delle chiavi
Scaricare il progetto di esempio (un file di archivio compresso) ed estrarne il contenuto.
Aprire il file SDKSample\CreateCloudService\CreateCloudService\LoginHelper.cs in un editor di testo. InitializeServiceClient Nel metodo sovrascrivere i valori delle variabili stringa tenantId, clientIde clientCredentials rispettivamente con i valori per l'ID tenant, l'ID applicazione e il segreto dell'applicazione. Questi valori sono quelli copiati durante la registrazione dell'applicazione.
Aprire il file SDKSample\CreateCloudService\CreateCloudService\Program.cs in un editor di testo. Main Nel metodo sovrascrivere alcuni dei valori inizializzati delle variabili dichiarate all'inizio del metodo. Nella tabella seguente vengono illustrati i nomi delle variabili e i valori che è necessario usare per tali variabili.
Nome variabile
Nuovo valore
m_subId
ID della sottoscrizione che contiene il servizio cloud
csrgName
Nome del gruppo di risorse che contiene il servizio cloud
csName
Nome della risorsa del servizio cloud
kvrgName
Nome del gruppo di risorse che contiene la risorsa dell'insieme di credenziali delle chiavi
kvName
Nome della risorsa dell'insieme di credenziali delle chiavi
kvsubid
ID della sottoscrizione che contiene l'insieme di credenziali delle chiavi (potrebbe essere diverso dall'ID sottoscrizione del servizio cloud)
secretidentifier
URL del certificato dell'insieme di credenziali delle chiavi
filename
Percorso locale del file di configurazione del servizio (ServiceConfiguration.Cloud.cscfg)
packageurl
URL della firma di accesso condiviso per il file del pacchetto del servizio (project-name.cspkg>)<
Nel riquadro Esplora soluzioni di Visual Studio fare clic con il pulsante destro del mouse sul nodo del progetto e quindi scegliere Gestisci pacchetti NuGet. Nella scheda Sfoglia cercare, selezionare e installare i pacchetti seguenti:
Microsoft.Azure.Management.ResourceManager
Microsoft.Azure.Management.Compute
Microsoft.Azure.Management.Storage
Azure.Identity
Microsoft.Rest.ClientRuntime.Azure.Authentication
Eseguire il progetto e attendere che i messaggi vengano visualizzati nel riquadro Output . Se il riquadro visualizza "exit with code 0", l'aggiornamento e la distribuzione dovrebbero funzionare correttamente. Se viene visualizzato "exit with code 1", potrebbe essere necessario verificare la presenza di messaggi di errore per esaminare eventuali problemi.
In Visual Studio è necessario apportare due modifiche alla configurazione. Configurare la configurazione del servizio in modo che il contesto locale sia allineato al contesto cloud e quindi si specifichi dove si trova l'insieme di credenziali delle chiavi.
Per la configurazione del servizio, copiare il contenuto del contesto cloud (il file ServiceConfiguration.Cloud.cscfg ) e incollarli nel contesto locale (il file ServiceConfiguration.Local.cscfg ). Si dispone di una configurazione diversa o è ancora necessario il file di configurazione locale per altri usi? Se una delle due condizioni è true, mantenere gli certificate elementi dal contesto locale esistente.
Nel riquadro Esplora soluzioni di Visual Studio fare clic con il pulsante destro del mouse sul nodo del progetto e quindi scegliere Pubblica. Procedere con la procedura guidata Pubblica app Azure lication fino a raggiungere la scheda Impostazioni. In tale scheda impostare il campo Insieme di credenziali delle chiavi sul percorso in cui viene salvato l'insieme di credenziali delle chiavi. Infine, selezionare il pulsante Pubblica e quindi attendere il completamento della distribuzione.
Dopo aver apportato le modifiche alla configurazione, i clienti potranno comunicare con il sito Web dei servizi cloud usando il protocollo HTTPS. Se il certificato è autofirmato, il browser potrebbe segnalare un avviso che indica che il certificato non è sicuro, ma il browser non blocca la connessione.