La communication avec Microsoft Azure Services cloud (support étendu) est effectuée à l’aide du protocole HTTPS (Hypertext Transfer Protocol Secure). Cet article explique comment activer la communication HTTPS pour Services cloud (support étendu).
Prerequisites
Étapes générales pour le déploiement de projet
Les étapes générales pour déployer un projet de Services cloud (support étendu) dans Azure sont les suivantes :
Préparez votre certificat.
Configurez votre projet.
Empaqueter le fichier projet dans les fichiers de définition de service (.csdef), de configuration de service (.cscfg) et de package de service (.cspkg) de votre service cloud.
Modifiez la configuration de la ressource Services cloud (support étendu), si nécessaire. Par exemple, vous pouvez apporter l’une des modifications suivantes :
- Mettez à jour l’URL du package.
- Configurez le paramètre d’URL.
- Mettez à jour le paramètre des secrets du système d’exploitation.
Déployez et mettez à jour le nouveau projet dans Azure.
Note
Le projet peut être déployé via plusieurs méthodes différentes, telles que l’utilisation des outils suivants :
- Visual Studio
- Modèle Azure Resource Manager (modèle ARM)
- Un outil d’intégration continue et de livraison continue (CI/CD), tel qu’Azure DevOps
Quelle que soit la méthode de déploiement, les étapes de déploiement générales sont identiques.
Les deux premières étapes sont nécessaires pour toutes les méthodes de déploiement. Ces étapes sont décrites dans la section Modifications du code. Les étapes restantes sont également importantes, mais elles ne nécessitent pas toujours une intervention manuelle de l’utilisateur. Par exemple, les étapes peuvent être effectuées automatiquement par un outil tel que Visual Studio. Les trois dernières étapes sont décrites dans la section Modifications de configuration.
Modifications du code
Pour apporter les modifications du code pour préparer votre certificat et configurer votre projet, procédez comme suit :
Suivez les instructions pour charger un certificat dans le coffre de clés à l’étape 6.
Notez l’empreinte numérique du certificat (chaîne hexadécimale à 40 chiffres).
Dans le fichier de configuration de service (.cscfg) de votre projet, ajoutez l’empreinte numérique du certificat au rôle dans lequel vous souhaitez utiliser le certificat. Par exemple, si vous souhaitez utiliser le certificat comme certificat SSL pour communiquer avec un WebRole, vous pouvez ajouter du code XML semblable à l’extrait de code suivant pour WebRole1 le premier enfant de l’élément racine ServiceConfiguration :
<Role name="WebRole1">
<Instances count="1" />
<Certificates>
<Certificate
name="Certificate1"
thumbprint="AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00"
thumbprintAlgorithm="sha1"
/>
</Certificates>
</Role>
Vous pouvez personnaliser le nom du certificat, mais il doit correspondre au nom du certificat utilisé dans le fichier de définition de service (.csdef).
Dans le fichier de définition de service (.csdef), ajoutez les éléments suivants.
| Parent XPath |
Éléments à ajouter |
Attributs à utiliser |
/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’élément Certificates doit être ajouté directement après la balise de fermeture Endpoints . Il ne contient aucun attribut. Il contient uniquement des éléments enfants Certificate .
Par exemple, votre fichier de définition de service peut ressembler au code XML suivant :
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="CSESOneWebRoleHTTPS" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WebRole name="WebRole1" vmsize="Standard_D1_v2">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
<Binding name="HttpsIn" endpointName="HttpsIn" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
<InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="Certificate1" />
</Endpoints>
<Certificates>
<Certificate name="Certificate1" storeLocation="LocalMachine" storeName="My" permissionLevel="limitedOrElevated" />
</Certificates>
</WebRole>
</ServiceDefinition>
Dans cet exemple, le fichier de définition de service est modifié pour lier un point de terminaison d’entrée du HttpsIn protocole HTTPS sur le port 443. Il utilise le Certificate1 certificat pour un magasin qui a un nom My et un emplacement pour LocalMachine un niveau d’autorisation limité ou élevé. Les noms de certificat dans les éléments et InputEndpoint les Certificate deux correspondent les uns aux autres. Ils correspondent également au nom du certificat utilisé dans le fichier de configuration de service (.cscfg) de l’étape précédente.
Modifications de configuration
Les instructions de modification de la configuration de votre service cloud diffèrent en fonction de la façon dont votre service cloud a été déployé. Ces instructions sont affichées sous les onglets suivants. Chaque onglet représente une méthode de déploiement différente.
Avant de continuer, consultez Déployer un Services cloud Azure (support étendu) à l’aide de la Portail Azure. Ensuite, procédez comme suit pour apporter les modifications de configuration correctes via le Portail Azure :
Accédez à l’entrée de blog intitulée Migration manuelle du service cloud classique vers le support étendu du service cloud vers le service cloud avec le modèle ARM, puis suivez les étapes 7 à 9. Ces instructions vous montrent comment effectuer les étapes suivantes :
Empaquetez le projet.
Chargez le package de service généré (<>) et les fichiers de configuration de service cloud (ServiceConfiguration.Cloud.cscfg) dans un conteneur de compte de stockage pour votre service cloud.
Note
Vous devez également charger le fichier de définition de service (ServiceDefinition.csdef) à l’aide du même processus décrit pour les deux autres fichiers.
Générez une URL de signature d’accès partagé (SAP) pour chacun des fichiers chargés.
Dans le Portail Azure, revenez à la page Vue d’ensemble de votre service cloud, puis sélectionnez Mettre à jour.
Dans la page Mettre à jour le service cloud, apportez les modifications suivantes sous l’onglet Informations de base :
Dans le champ Emplacement de définition de package/configuration/service , sélectionnez À partir de l’objet blob.
Dans le champ Charger un package (.cspkg, .zip), procédez comme suit :
- Sélectionnez le lien Parcourir .
- Sélectionnez le compte de stockage et le conteneur dans lequel vous avez chargé des fichiers.
- Dans la page conteneur, sélectionnez le fichier correspondant (dans ce cas, <>), puis sélectionnez le bouton Sélectionner.
Pour le champ Charger une configuration (.cscfg) (et le fichier ServiceConfiguration.Cloud.cscfg ), répétez la sous-procédure décrite à l’étape précédente.
Pour le champ Charger une définition de service (.csdef) (et le fichier ServiceDefinition.csdef ), répétez à nouveau la sous-version.
Sélectionnez l’onglet Configuration.
Dans le champ Coffre de clés, sélectionnez le coffre de clés dans lequel vous avez chargé le certificat (plus haut dans la section Modifications du code). Une fois le certificat trouvé dans le coffre de clés sélectionné, le certificat répertorié affiche l’état trouvé.
Pour déployer le projet nouvellement configuré, sélectionnez le bouton Mettre à jour .
Avant de continuer, consultez Déployer un service cloud (support étendu) à l’aide d’Azure PowerShell. Ensuite, procédez comme suit pour apporter les modifications de configuration via un script PowerShell :
Accédez à l’entrée de blog intitulée Migration manuelle du service cloud classique vers le support étendu du service cloud vers le service cloud avec le modèle ARM, puis suivez les étapes 7 à 9. Ces instructions vous montrent comment effectuer les étapes suivantes :
Empaquetez le projet.
Chargez le fichier de package de service généré (<project-name.cspkg>) dans un conteneur de compte de stockage pour votre service cloud.
Note
Malgré ce qui est indiqué dans les instructions, vous n’avez pas besoin de charger le fichier de configuration du service cloud (ServiceConfiguration.Cloud.cscfg). Seul le fichier de package de service doit être chargé ici.
Générez une URL de signature d’accès partagé (SAP) pour le fichier de package de service chargé.
Connectez-vous à Azure en exécutant l’applet de commande Connect-AzAccount .
Dans le script PowerShell suivant, remplacez les espaces réservés au début du script par les valeurs réelles de chaque variable, puis exécutez le script pour mettre à jour votre service cloud :
# Enter values for placeholders in the following variables.
$vaultName = "<key-vault-resource-name>"
$resourceGroupKeyVault = "<resource-group-name-where-key-vault-is-deployed>"
$certificateName = "<name-of-certificate-saved-in-key-vault>"
$cloudService = @{
Name = "<name-of-cloud-service>"
ResourceGroupName = "<resource-group-name-where-cloud-service-is-deployed>"
SubscriptionId = "<subscription-guid>"
}
$cscfgFilePath = "<local-path-to-your-service-configuration-file-cscfg>"
$cspkgUrl = "<sas-token-url-of-the-service-package-file-cspkg>"
# Code execution
$keyVault = Get-AzKeyVault -VaultName $vaultName -ResourceGroupName $resourceGroupKeyVault
$certificate = Get-AzKeyVaultCertificate -VaultName $vaultName -Name $certificateName
$vaultSecretGroupObject = @{
CertificateUrl = $certificate.SecretId
Id = $keyVault.ResourceId
}
$secretGroup = New-AzCloudServiceVaultSecretGroupObject @vaultSecretGroupObject
$osProfile = @{secret = @($secretGroup)}
$cses = Get-AzCloudService @cloudService
$cses.Configuration = Get-Content $cscfgFilePath | Out-String
$cses.PackageUrl = $cspkgUrl
$cses.OSProfile = $osProfile
$cses | Update-AzCloudService
Avant de continuer, consultez Déployer un service cloud (support étendu) à l’aide de modèles ARM. Ensuite, procédez comme suit pour configurer votre modèle ARM :
Accédez à l’entrée de blog intitulée Migration manuelle du service cloud classique vers le support étendu du service cloud vers le service cloud avec le modèle ARM, puis suivez les étapes 7 à 10. Ces instructions vous montrent comment effectuer les étapes suivantes :
Empaquetez le projet.
Chargez le package de service généré (<>) et les fichiers de configuration de service cloud (ServiceConfiguration.Cloud.cscfg) dans un conteneur de compte de stockage pour votre service cloud.
Générez une URL de signature d’accès partagé (SAP) pour chacun des fichiers chargés.
Obtenez les valeurs suivantes à partir de la page de certificat du coffre de clés dans l’Portail Azure :
- URL du certificat Key Vault
- ID d’abonnement
- Nom du groupe de ressources dans lequel le coffre de clés est déployé
- Nom du service pour le coffre de clés
Dans votre modèle ARM d’origine pour le service cloud, recherchez la osProfile propriété. Si le projet de service cloud d’origine prend uniquement en charge la communication HTTP, la osProfile propriété est vide ("osProfile": {}). Pour permettre au service cloud de récupérer le certificat approprié à partir du coffre de clés approprié, spécifiez le coffre de clés que vous souhaitez utiliser dans le modèle ARM. Vous pouvez utiliser un paramètre pour représenter cette valeur. Vous pouvez également encoder en dur la valeur dans le modèle ARM, comme illustré dans l’exemple suivant :
"osProfile": {
"secrets": [
{
"sourceVault": {
"id": "/subscriptions/88889999-aaaa-bbbb-cccc-ddddeeeeffff/resourceGroups/cstocses/providers/Microsoft.KeyVault/vaults/cstocses"
},
"vaultCertificates": [
{
"certificateUrl": "https://cstocses.vault.azure.net/secrets/csescert/0123456789abcdef0123456789abcdef"
}
]
}
]
}
Dans le texte JSON du modèle ARM, la id valeur du sourceVault paramètre fait partie de l’URL de la page Key Vault dans le Portail Azure. La certificateUrl valeur est l’URL du certificat de coffre de clés que vous avez trouvée précédemment. Les formats de texte de ces valeurs sont affichés dans le tableau suivant.
| Paramètre |
Format |
| ID du coffre source |
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<key-vault-name> |
| URL du certificat Key Vault |
https://<key-vault-name>.vault.azure.net/secrets/<certificate-name>/<certificate-secret> |
Déployez votre modèle ARM mis à jour contenant de nouveaux paramètres, tels que le jeton SAP de package, le jeton SAP de configuration, etc. Pour voir comment déclarer et spécifier ces paramètres, vous pouvez passer en revue un exemple de fichier de modèle ARM et un exemple de fichier de paramètres de modèle ARM. Ensuite, attendez que le déploiement se termine.
Note
Si vous recevez un message d’erreur indiquant que l’adresse IP publique est utilisée, supprimez l’adresse IP publique du fichier de configuration de service (.cscfg) et le fichier de paramètres du modèle ARM. Ne supprimez pas la déclaration d’adresse IP publique du fichier de modèle ARM lui-même.
Avant de continuer, consultez Déployer Services cloud (support étendu) à l’aide du Kit de développement logiciel (SDK) Azure.
Cette section explique comment utiliser le Kit de développement logiciel (SDK) Azure et C# pour apporter les modifications de configuration appropriées. Pour utiliser le Kit de développement logiciel (SDK) pour déployer le projet de service cloud et modifier la configuration associée, vous devez inscrire une application dans l’ID Microsoft Entra. Pour effectuer l’inscription, consultez le portail Utiliser le portail pour créer une application Microsoft Entra et un principal de service qui peuvent accéder à l’article sur les ressources . Le tableau suivant décrit les étapes spécifiques à suivre et la sous-section correspondante à lire dans cet article.
Procédez comme suit pour apporter les modifications de configuration appropriées :
Accédez à l’entrée de blog intitulée Migration manuelle du service cloud classique vers le support étendu du service cloud vers le service cloud avec le modèle ARM et suivez les étapes 7 à 10. Ces instructions vous montrent comment effectuer les étapes suivantes :
Empaquetez le projet.
Chargez le fichier de package de service généré (<project-name.cspkg>) dans un conteneur de compte de stockage pour votre service cloud.
Note
Malgré ce qui est indiqué dans les instructions, vous n’avez pas besoin de charger le fichier de configuration du service cloud (ServiceConfiguration.Cloud.cscfg). Seul le fichier de package de service doit être chargé ici.
Générez une URL de signature d’accès partagé (SAP) pour le fichier de package de service chargé.
Obtenez les valeurs suivantes à partir de la page de certificat du coffre de clés dans l’Portail Azure :
- URL du certificat Key Vault
- ID d’abonnement
- Nom du groupe de ressources dans lequel le coffre de clés est déployé
- Nom du service pour le coffre de clés
Téléchargez l’exemple de projet (fichier d’archive compressé) et extrayez son contenu.
Ouvrez le fichier SDKSample\CreateCloudService\CreateCloudService\LoginHelper.cs dans un éditeur de texte. Dans la InitializeServiceClient méthode, remplacez les valeurs des tenantIdvariables , clientIdet clientCredentials chaîne avec les valeurs de l’ID de locataire, de l’ID d’application et du secret d’application, respectivement. Ces valeurs sont celles que vous avez copiées lorsque vous avez inscrit votre application.
Ouvrez le fichier SDKSample\CreateCloudService\CreateCloudService\Program.cs dans un éditeur de texte. Dans la Main méthode, remplacez certaines des valeurs initialisées des variables déclarées au début de la méthode. Le tableau suivant montre les noms des variables et les valeurs que vous devez utiliser pour elles.
| Nom de la variable |
Nouvelle valeur |
m_subId |
ID de l’abonnement qui contient le service cloud |
csrgName |
Nom du groupe de ressources qui contient le service cloud |
csName |
Nom de la ressource de service cloud |
kvrgName |
Nom du groupe de ressources qui contient la ressource key vault |
kvName |
Nom de la ressource key vault |
kvsubid |
ID de l’abonnement qui contient le coffre de clés (cela peut différer de l’ID d’abonnement du service cloud) |
secretidentifier |
URL du certificat key vault |
filename |
Chemin d’accès local à votre fichier de configuration de service (ServiceConfiguration.Cloud.cscfg) |
packageurl |
URL SAS du fichier de package de service (<>) |
Dans le volet Explorateur de solutions Visual Studio, cliquez avec le bouton droit sur le nœud du projet, puis sélectionnez Gérer les packages NuGet. Sous l’onglet Parcourir , recherchez, sélectionnez et installez les packages suivants :
Microsoft.Azure.Management.ResourceManager
Microsoft.Azure.Management.Compute
Microsoft.Azure.Management.Storage
Azure.Identity
Microsoft.Rest.ClientRuntime.Azure.Authentication
Exécutez le projet, puis attendez que les messages apparaissent dans le volet Sortie . Si le volet affiche « quitter avec le code 0 », la mise à jour et le déploiement doivent fonctionner correctement. S’il affiche « quitter avec le code 1 », vous devrez peut-être vérifier les messages d’erreur pour examiner les problèmes.
Avant de continuer, consultez Créer et déployer sur Services cloud (support étendu) dans Visual Studio.
Dans Visual Studio, vous devez apporter deux modifications de configuration. Vous configurez votre configuration de service afin que le contexte local soit aligné sur le contexte cloud, puis vous spécifiez l’emplacement de votre coffre de clés.
Pour la configuration du service, copiez le contenu du contexte cloud (fichier ServiceConfiguration.Cloud.cscfg ) et collez-les dans le contexte local (fichier ServiceConfiguration.Local.cscfg ). Avez-vous une autre configuration ou avez-vous toujours besoin du fichier de configuration local pour d’autres utilisations ? Si l’une ou l’autre condition est vraie, conservez les certificate éléments du contexte local existant.
Dans le volet Explorateur de solutions Visual Studio, cliquez avec le bouton droit sur le nœud du projet, puis sélectionnez Publier. Passez à l’Assistant Publier une application Azure jusqu’à atteindre l’onglet Paramètres . Sous cet onglet, définissez le champ Coffre de clés sur l’emplacement dans lequel votre coffre de clés est enregistré. Enfin, sélectionnez le bouton Publier , puis attendez que le déploiement se termine.
Après avoir apporté les modifications de configuration, les clients pourront communiquer avec votre site web de services cloud à l’aide du protocole HTTPS. Si votre certificat est auto-signé, le navigateur peut signaler un avertissement indiquant que le certificat n’est pas sécurisé, mais que le navigateur ne bloque pas la connexion.