Kommunikation med Microsoft Azure Cloud Services (utökad support) sker med hjälp av HTTPS-protokollet (Hypertext Transfer Protocol Secure). I den här artikeln beskrivs hur du aktiverar HTTPS-kommunikation för Cloud Services (utökad support).
Förutsättningar
Allmänna steg för projektdistribution
De allmänna stegen för att distribuera ett Cloud Services-projekt (utökad support) till Azure är följande:
Förbered certifikatet.
Konfigurera projektet.
Paketera projektfilen i tjänstdefinitionsfilerna (.csdef), tjänstkonfigurationen (.cscfg) och tjänstpaketfilerna (.cspkg) för molntjänsten.
Ändra konfigurationen av Cloud Services-resursen (utökad support) om det behövs. Du kan till exempel göra någon av följande ändringar:
- Uppdatera paket-URL:en.
- Konfigurera URL-inställningen.
- Uppdatera inställningen för operativsystemhemligheter.
Distribuera och uppdatera det nya projektet till Azure.
Kommentar
Projektet kan distribueras via flera olika metoder, till exempel med hjälp av följande verktyg:
Oavsett distributionsmetod är de allmänna distributionsstegen desamma.
De två första stegen är nödvändiga för alla distributionsmetoder. De här stegen beskrivs i avsnittet Kodändringar . De återstående stegen är också viktiga, men de kräver inte alltid manuella användaråtgärder. Stegen kan till exempel utföras automatiskt av ett verktyg som Visual Studio. De tre sista stegen beskrivs i avsnittet Konfigurationsändringar .
Kodändringar
Utför följande steg för att göra kodändringarna för att förbereda certifikatet och konfigurera projektet:
Följ anvisningarna för att ladda upp ett certifikat till nyckelvalvet via steg 6.
Skriv ned tumavtrycket för certifikatet (en 40-siffrig hexadecimal sträng).
I projektets tjänstkonfigurationsfil (.cscfg) lägger du till tumavtrycket för certifikatet till den roll där du vill använda certifikatet. Om du till exempel vill använda certifikatet som SSL-certifikat för att kommunicera med en WebRole kan du lägga till XML-kod som liknar följande kodfragment för WebRole1 som det första underordnade rotelementet ServiceConfiguration :
<Role name="WebRole1">
<Instances count="1" />
<Certificates>
<Certificate
name="Certificate1"
thumbprint="0123456789ABCDEF0123456789ABCDEF01234567"
thumbprintAlgorithm="sha1"
/>
</Certificates>
</Role>
Du kan anpassa namnet på certifikatet, men det måste matcha certifikatnamnet som används i tjänstdefinitionsfilen (.csdef).
Lägg till följande element i filen tjänstdefinition (.csdef).
| Överordnad XPath |
Element att lägga till |
Attribut som ska användas |
/ServiceDefinition/WebRole/Sites/Site/Bindings |
Binding |
name, endpointName |
/ServiceDefinition/WebRole/Endpoints |
InputEndpoint |
name, protocol, port, certificate |
/ServiceDefinition/WebRole |
Certificates/Certificate |
name, storeLocation, storeName, permissionLevel |
Elementet Certificates måste läggas till direkt efter den avslutande Endpoints taggen. Den innehåller inga attribut. Den innehåller endast underordnade Certificate element.
Din tjänstdefinitionsfil kan till exempel likna följande XML-kod:
<?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>
I det här exemplet ändras tjänstdefinitionsfilen för att binda en indataslutpunkt HttpsIn för för HTTPS-protokollet på port 443. Det använder certifikatet Certificate1 för ett arkiv som har ett namn på My och en plats LocalMachine för för bara en begränsad eller förhöjd behörighetsnivå. Certifikatnamnen i elementen InputEndpoint och Certificate matchar varandra. De matchar även certifikatnamnet som användes i tjänstkonfigurationsfilen (.cscfg) från föregående steg.
Konfigurationsändringar
Instruktionerna för att ändra molntjänstkonfigurationen skiljer sig åt beroende på hur molntjänsten distribuerades. Dessa instruktioner visas på följande flikar. Varje flik representerar en annan distributionsmetod.
Innan du fortsätter kan du läsa Distribuera en Azure Cloud Services (utökad support) med hjälp av Azure Portal. Följ sedan de här stegen för att göra rätt konfigurationsändringar via Azure Portal:
Gå till blogginlägget med titeln Manuell migrering från den klassiska cloud service-till-molntjänsten utökad support med ARM-mall och följ steg 7 till och med 9. De här anvisningarna visar hur du gör följande:
Paketera projektet.
Ladda upp de genererade tjänstpaketfilerna (<>) och cloud service configuration (ServiceConfiguration.Cloud.cscfg) till en lagringskontocontainer för molntjänsten.
Kommentar
Du måste också ladda upp tjänstdefinitionsfilen (ServiceDefinition.csdef) med hjälp av samma process som beskrivs för de andra två filerna.
Generera en URL för signatur för delad åtkomst (SAS) för var och en av de uppladdade filerna.
I Azure Portal går du tillbaka till sidan Översikt för molntjänsten och väljer sedan Uppdatera.
På sidan Uppdatera molntjänst gör du följande ändringar på fliken Grundläggande :
I fältet Paket/konfiguration/tjänstdefinition väljer du Från blob.
I fältet Ladda upp ett paket (.cspkg, .zip) följer du dessa steg:
- Välj länken Bläddra .
- Välj det lagringskonto och den container som du laddade upp filer till.
- På containersidan väljer du motsvarande fil (i det här fallet <>) och väljer sedan knappen Välj.
För fältet Ladda upp en konfiguration (.cscfg) (och filen ServiceConfiguration.Cloud.cscfg) upprepar du underproceduren som beskrivs i föregående steg.
För fältet Ladda upp en tjänstdefinition (.csdef) (och filen ServiceDefinition.csdef ) upprepar du underproceduren igen.
Välj fliken Konfiguration.
I fältet Nyckelvalv väljer du det nyckelvalv där du laddade upp certifikatet (tidigare i avsnittet Kodändringar ). När certifikatet hittas i det valda nyckelvalvet visar det angivna certifikatet statusen Hittades.
Om du vill distribuera det nyligen konfigurerade projektet väljer du knappen Uppdatera .
Innan du fortsätter kan du läsa Distribuera en molntjänst (utökad support) med Azure PowerShell. Följ sedan de här stegen för att göra konfigurationsändringarna via ett PowerShell-skript:
Gå till blogginlägget med titeln Manuell migrering från den klassiska cloud service-till-molntjänsten utökad support med ARM-mall och följ steg 7 till och med 9. De här anvisningarna visar hur du gör följande:
Paketera projektet.
Ladda upp den genererade tjänstpaketfilen (<project-name.cspkg>) till en lagringskontocontainer för din molntjänst.
Kommentar
Trots vad som anges i anvisningarna behöver du inte ladda upp molntjänstkonfigurationsfilen (ServiceConfiguration.Cloud.cscfg). Endast tjänstpaketfilen måste laddas upp här.
Generera en URL för signatur för delad åtkomst (SAS) för den uppladdade tjänstpaketfilen.
Logga in på Azure genom att köra cmdleten Connect-AzAccount .
I följande PowerShell-skript ersätter du platshållarna i början av skriptet med de faktiska värdena för varje variabel och kör sedan skriptet för att uppdatera molntjänsten:
# 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
Innan du fortsätter kan du läsa Distribuera en molntjänst (utökad support) med ARM-mallar. Följ sedan de här stegen för att konfigurera ARM-mallen:
Gå till blogginlägget med titeln Manuell migrering från den klassiska cloud service-till-molntjänsten utökad support med ARM-mall och följ steg 7 till och med 10. De här anvisningarna visar hur du gör följande:
Paketera projektet.
Ladda upp de genererade tjänstpaketfilerna (<>) och cloud service configuration (ServiceConfiguration.Cloud.cscfg) till en lagringskontocontainer för molntjänsten.
Generera en URL för signatur för delad åtkomst (SAS) för var och en av de uppladdade filerna.
Hämta följande värden från nyckelvalvscertifikatsidan i Azure Portal:
- URL för Key Vault-certifikat
- Prenumerations-ID:t
- Namnet på resursgruppen där nyckelvalvet distribueras
- Tjänstnamn för nyckelvalvet
Leta reda på osProfile egenskapen i din ursprungliga ARM-mall för molntjänsten. Om det ursprungliga molntjänstprojektet endast stöder HTTP-kommunikation är egenskapen osProfile tom ("osProfile": {}). Om du vill att molntjänsten ska kunna hämta rätt certifikat från rätt nyckelvalv anger du vilket nyckelvalv du vill använda i ARM-mallen. Du kan använda en parameter för att representera det här värdet. Eller så kan du hårdkoda värdet i ARM-mallen, som du ser i följande exempel:
"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"
}
]
}
]
}
I JSON-texten i ARM-mallen id är värdet i parametern sourceVault en del av URL:en för key vault-sidan i Azure Portal. Värdet certificateUrl är url:en för nyckelvalvets certifikat som du hittade tidigare. Textformaten för dessa värden visas i följande tabell.
| Parameter |
Format |
| Källvalvs-ID |
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<key-vault-name> |
| URL för Key Vault-certifikat |
https://<key-vault-name>.vault.azure.net/secrets/<certificate-name>/<certificate-secret> |
Distribuera din uppdaterade ARM-mall som innehåller nya parametrar, till exempel paket-SAS-token, konfigurations-SAS-token med mera. Om du vill se hur du deklarerar och anger dessa parametrar kan du granska en exempelfil för ARM-mallar och en exempelfil för ARM-mallparametrar. Vänta sedan tills distributionen är klar.
Kommentar
Om du får ett felmeddelande om att den offentliga IP-adressen används tar du bort den offentliga IP-adressen från tjänstkonfigurationsfilen (.cscfg) och ARM-mallparametrar. Ta inte bort den offentliga IP-adressdeklarationen från själva ARM-mallfilen.
Innan du fortsätter kan du läsa Distribuera Cloud Services (utökad support) med hjälp av Azure SDK.
I det här avsnittet beskrivs hur du använder Azure SDK och C# för att göra rätt konfigurationsändringar. Om du vill använda SDK:t för att distribuera molntjänstprojektet och ändra den relaterade konfigurationen bör du registrera ett program i Microsoft Entra-ID. Information om hur du gör registreringen finns i artikeln Använda portalen för att skapa ett Microsoft Entra-program och tjänstens huvudnamn som kan komma åt resurser . I följande tabell beskrivs de specifika steg som ska utföras och motsvarande underavsnitt som ska läsas i den artikeln.
Följ dessa steg för att göra rätt konfigurationsändringar:
Gå till blogginlägget med titeln Manuell migrering från den klassiska cloud service-till-molntjänsten utökad support med ARM-mall och följ steg 7 till och med 10. De här anvisningarna visar hur du gör följande:
Paketera projektet.
Ladda upp den genererade tjänstpaketfilen (<project-name.cspkg>) till en lagringskontocontainer för din molntjänst.
Kommentar
Trots vad som anges i anvisningarna behöver du inte ladda upp molntjänstkonfigurationsfilen (ServiceConfiguration.Cloud.cscfg). Endast tjänstpaketfilen måste laddas upp här.
Generera en URL för signatur för delad åtkomst (SAS) för den uppladdade tjänstpaketfilen.
Hämta följande värden från nyckelvalvscertifikatsidan i Azure Portal:
- URL för Key Vault-certifikat
- Prenumerations-ID:t
- Namnet på resursgruppen där nyckelvalvet distribueras
- Tjänstnamn för nyckelvalvet
Ladda ned exempelprojektet (en komprimerad arkivfil) och extrahera innehållet.
Öppna filen SDKSample\CreateCloudService\CreateCloudService\LoginHelper.cs i en textredigerare.
InitializeServiceClient I -metoden skriver du över värdena för variablerna tenantId, clientIdoch med clientCredentials värdena för klient-ID, program-ID och programhemlighet. Dessa värden är de som du kopierade när du registrerade ditt program.
Öppna filen SDKSample\CreateCloudService\CreateCloudService\Program.cs i en textredigerare.
Main I metoden skriver du över några av de initierade värdena för variablerna som deklarerades i början av metoden. I följande tabell visas variabelnamnen och de värden som du måste använda för dem.
| Variabelnamn |
Nytt värde |
m_subId |
ID för prenumerationen som innehåller molntjänsten |
csrgName |
Namnet på resursgruppen som innehåller molntjänsten |
csName |
Namnet på molntjänstens resurs |
kvrgName |
Namnet på resursgruppen som innehåller nyckelvalvsresursen |
kvName |
Resursnamnet för nyckelvalvet |
kvsubid |
ID:t för prenumerationen som innehåller nyckelvalvet (detta kan skilja sig från prenumerations-ID:t för molntjänsten) |
secretidentifier |
URL:en för nyckelvalvets certifikat |
filename |
Den lokala sökvägen till tjänstkonfigurationsfilen (ServiceConfiguration.Cloud.cscfg) |
packageurl |
SAS-URL:en för tjänstpaketfilen (<)> |
I fönstret Solution Explorer i Visual Studio högerklickar du på projektnoden och väljer sedan Hantera NuGet-paket. På fliken Bläddra söker du efter, väljer och installerar följande paket:
Microsoft.Azure.Management.ResourceManager
Microsoft.Azure.Management.Compute
Microsoft.Azure.Management.Storage
Azure.Identity
Microsoft.Rest.ClientRuntime.Azure.Authentication
Kör projektet och vänta sedan på att meddelanden ska visas i fönstret Utdata . Om fönstret visar "avsluta med kod 0" bör uppdateringen och distributionen fungera. Om den visar "avsluta med kod 1" kan du behöva söka efter felmeddelanden för att granska eventuella problem.
Innan du fortsätter kan du läsa Skapa och distribuera till Cloud Services (utökad support) i Visual Studio.
I Visual Studio måste du göra två konfigurationsändringar. Du konfigurerar tjänstkonfigurationen så att den lokala kontexten är anpassad till molnkontexten och sedan anger du var ditt nyckelvalv finns.
För tjänstkonfigurationen kopierar du innehållet i molnkontexten ( filen ServiceConfiguration.Cloud.cscfg ) och klistrar in dem i den lokala kontexten (filen ServiceConfiguration.Local.cscfg ). Har du en annan konfiguration eller behöver du fortfarande den lokala konfigurationsfilen för andra användningsområden? Om något av villkoren är sant bevarar du elementen certificate från den befintliga lokala kontexten.
I fönstret Visual Studio Solution Explorer högerklickar du på projektnoden och väljer sedan Publicera. Fortsätt genom guiden Publicera Azure-program tills du kommer till fliken Inställningar . På den fliken anger du fältet Nyckelvalv till den plats där nyckelvalvet sparas.
Välj slutligen knappen Publicera och vänta sedan tills distributionen har slutförts.
När du har ändrat konfigurationen kan kunderna kommunicera med din webbplats för molntjänster med hjälp av HTTPS-protokollet. Om certifikatet är självsignerat kan webbläsaren rapportera en varning om att certifikatet inte är säkert, men webbläsaren blockerar inte anslutningen.