Włączanie komunikacji HTTPS w usługach Azure Cloud Services (rozszerzona obsługa)
Artykuł
Komunikacja z usługami Microsoft Azure Cloud Services (rozszerzona obsługa) odbywa się przy użyciu protokołu Https (Hypertext Transfer Protocol Secure). W tym artykule omówiono sposób włączania komunikacji HTTPS dla usług Cloud Services (rozszerzona obsługa).
Certyfikat Secure Sockets Layer (SSL) w formacie pliku wymiany informacji osobistych (pfx). Jeśli nie masz jeszcze certyfikatu SSL przypisanego przez urząd certyfikacji, użyj skryptu programu PowerShell, aby samodzielnie przypisać certyfikat do użycia testowego.
Ogólne kroki wdrażania projektu usług Cloud Services (rozszerzonej pomocy technicznej) na platformie Azure są następujące:
Przygotuj certyfikat.
Skonfiguruj projekt.
Spakuj plik projektu do plików definicji usługi (csdef), konfiguracji usługi (.cscfg) i pakietu usługi (cspkg) usługi w usłudze w chmurze.
W razie potrzeby zmień konfigurację zasobu usług Cloud Services (wsparcie dodatkowe). Można na przykład wprowadzić dowolną z następujących modyfikacji:
Zaktualizuj adres URL pakietu.
Skonfiguruj ustawienie adresu URL.
Zaktualizuj ustawienie wpisów tajnych systemu operacyjnego.
Wdrażanie i aktualizowanie nowego projektu na platformie Azure.
Uwaga 16.
Projekt można wdrożyć za pomocą kilku różnych metod, takich jak za pomocą następujących narzędzi:
Narzędzie ciągłej integracji i ciągłego dostarczania (CI/CD), takie jak Usługa Azure DevOps
Niezależnie od metody wdrażania ogólne kroki wdrażania są takie same.
Pierwsze dwa z tych kroków są niezbędne dla wszystkich metod wdrażania. Te kroki zostały omówione w sekcji Zmiany kodu. Pozostałe kroki są również ważne, ale nie zawsze wymagają ręcznej interwencji użytkownika. Na przykład kroki mogą być wykonywane automatycznie przez narzędzie, takie jak Visual Studio. Ostatnie trzy z tych kroków zostały omówione w sekcji Zmiany konfiguracji.
Zmiany kodu
Aby wprowadzić zmiany kodu w celu przygotowania certyfikatu i skonfigurowania projektu, wykonaj następujące kroki:
Postępuj zgodnie z instrukcjami, aby przekazać certyfikat do magazynu kluczy za pomocą kroku 6.
W pliku konfiguracji usługi (cscfg) projektu dodaj odcisk palca certyfikatu do roli, w której chcesz użyć certyfikatu. Jeśli na przykład chcesz użyć certyfikatu jako certyfikatu SSL do komunikowania się z elementem WebRole, możesz dodać kod XML podobny do następującego fragmentu kodu jako WebRole1 pierwszego elementu głównego ServiceConfiguration :
Możesz dostosować nazwę certyfikatu, ale musi być zgodna z nazwą certyfikatu używaną w pliku definicji usługi (csdef).
W pliku definicji usługi (csdef) dodaj następujące elementy.
Nadrzędny XPath
Elementy do dodania
Atrybuty do użycia
/ServiceDefinition/WebRole/Sites/Site/Bindings
Binding
name, endpointName
/ServiceDefinition/WebRole/Endpoints
InputEndpoint
name, protocol, port, certificate
/ServiceDefinition/WebRole
Certificates/Certificate
name, storeLocation, storeName, permissionLevel
Element Certificates musi zostać dodany bezpośrednio po tagu zamykającym Endpoints . Nie zawiera żadnych atrybutów. Zawiera tylko elementy podrzędne Certificate .
Na przykład plik definicji usługi może przypominać następujący kod XML:
W tym przykładzie plik definicji usługi jest modyfikowany w celu powiązania wejściowego punktu końcowego HttpsIn protokołu HTTPS na porcie 443. Używa certyfikatu Certificate1 dla magazynu, który ma nazwę My i lokalizację LocalMachine tylko dla ograniczonego lub podwyższonego poziomu uprawnień. Nazwy certyfikatów w elementach InputEndpoint i Certificate są zgodne ze sobą. Są one również zgodne z nazwą certyfikatu, która została użyta w pliku konfiguracji usługi (cscfg) z poprzedniego kroku.
Zmiany konfiguracji
Instrukcje dotyczące zmiany konfiguracji usługi w chmurze różnią się w zależności od sposobu wdrożenia usługi w chmurze. Te instrukcje są wyświetlane na poniższych kartach. Każda karta reprezentuje inną metodę wdrażania.
Przekaż wygenerowany pakiet usługi (<project-name.cspkg>) i konfigurację usługi w chmurze (ServiceConfiguration.Cloud.cscfg) do kontenera konta magazynu dla usługi w chmurze.
Uwaga 16.
Musisz również przekazać plik definicji usługi (ServiceDefinition.csdef) przy użyciu tego samego procesu, który został opisany dla pozostałych dwóch plików.
Wygeneruj adres URL sygnatury dostępu współdzielonego (SAS) dla każdego przekazanego pliku.
W witrynie Azure Portal wróć do strony Przegląd usługi w chmurze, a następnie wybierz pozycję Aktualizuj.
Na stronie Aktualizowanie usługi w chmurze wprowadź następujące zmiany na karcie Podstawy:
W polu Lokalizacja definicji pakietu/konfiguracji/usługi wybierz pozycję Z obiektu blob.
W polu Przekaż pakiet (.cspkg, .zip) wykonaj następujące kroki:
Wybierz link Przeglądaj.
Wybierz konto magazynu i kontener, do którego zostały przekazane pliki.
Na stronie kontenera wybierz odpowiedni plik (w tym przypadku project-name.cspkg>), a następnie wybierz przycisk Wybierz.<
W polu Przekaż konfigurację (cscfg) (i plik ServiceConfiguration.Cloud.cscfg) powtórz podprocedurę opisaną w poprzednim kroku.
W polu Przekaż definicję usługi (csdef) (i plik ServiceDefinition.csdef) powtórz ponownie podprocedure.
Wybierz kartę Konfiguracja.
W polu Magazyn kluczy wybierz magazyn kluczy, w którym przekazano certyfikat (wcześniej w sekcji Zmiany kodu). Po znalezieniu certyfikatu w wybranym magazynie kluczy wyświetlony zostanie stan znaleziono.
Aby wdrożyć nowo skonfigurowany projekt, wybierz przycisk Aktualizuj .
Przekaż wygenerowany plik pakietu usługi (<project-name.cspkg>) do kontenera konta magazynu dla usługi w chmurze.
Uwaga 16.
Pomimo tego, co zostało określone w instrukcjach, nie musisz przekazywać pliku konfiguracji usługi w chmurze (ServiceConfiguration.Cloud.cscfg). W tym miejscu należy przekazać tylko plik pakietu usługi.
W poniższym skrypcie programu PowerShell zastąp symbole zastępcze na początku skryptu rzeczywistymi wartościami dla każdej zmiennej, a następnie uruchom skrypt, aby zaktualizować usługę w chmurze:
Przekaż wygenerowany pakiet usługi (<project-name.cspkg>) i konfigurację usługi w chmurze (ServiceConfiguration.Cloud.cscfg) do kontenera konta magazynu dla usługi w chmurze.
Wygeneruj adres URL sygnatury dostępu współdzielonego (SAS) dla każdego przekazanego pliku.
Pobierz następujące wartości ze strony certyfikatu magazynu kluczy w witrynie Azure Portal:
Adres URL certyfikatu usługi Key Vault
Identyfikator subskrypcji
Nazwa grupy zasobów, w której wdrożono magazyn kluczy
Nazwa usługi dla magazynu kluczy
W oryginalnym szablonie usługi ARM dla usługi w chmurze znajdź osProfile właściwość . Jeśli oryginalny projekt usługi w chmurze obsługuje tylko komunikację HTTP, właściwość jest pusta osProfile ("osProfile": {}). Aby umożliwić usłudze w chmurze pobranie poprawnego certyfikatu z odpowiedniego magazynu kluczy, określ magazyn kluczy, którego chcesz użyć w szablonie usługi ARM. Możesz użyć parametru do reprezentowania tej wartości. Możesz też zakodować wartość w szablonie usługi ARM, jak pokazano w poniższym przykładzie:
W tekście JSON szablonu id usługi ARM wartość w sourceVault parametrze jest częścią adresu URL strony usługi Key Vault w witrynie Azure Portal. Wartość certificateUrl to adres URL certyfikatu magazynu kluczy, który został znaleziony wcześniej. Formaty tekstowe tych wartości są wyświetlane w poniższej tabeli.
Wdróż zaktualizowany szablon usługi ARM zawierający nowe parametry, takie jak token sygnatury dostępu współdzielonego pakietu, token SAS konfiguracji i nie tylko. Aby zobaczyć, jak zadeklarować i określić te parametry, możesz przejrzeć przykładowy plik szablonu usługi ARM i przykładowy plik parametrów szablonu usługi ARM. Następnie poczekaj na zakończenie wdrożenia.
Uwaga 16.
Jeśli zostanie wyświetlony komunikat o błędzie informujący, że publiczny adres IP jest używany, usuń publiczny adres IP z pliku konfiguracji usługi (cscfg) i pliku parametrów szablonu usługi ARM. Nie usuwaj deklaracji publicznego adresu IP z samego pliku szablonu usługi ARM.
W tej sekcji opisano sposób używania zestawu Azure SDK i języka C# do wprowadzania poprawnych zmian konfiguracji. Aby pomyślnie użyć zestawu SDK do wdrożenia projektu usługi w chmurze i zmodyfikowania powiązanej konfiguracji, należy zarejestrować aplikację w identyfikatorze Entra firmy Microsoft. Aby przeprowadzić rejestrację, zobacz artykuł Tworzenie aplikacji i jednostki usługi Microsoft Entra przy użyciu portalu, które mogą uzyskiwać dostęp do zasobów . W poniższej tabeli przedstawiono konkretne kroki, które należy wykonać, oraz odpowiednią podsekcję do przeczytania w tym artykule.
Krok
Link podsekcji
Przypisywanie subskrypcji roli właściciela aplikacji
Przekaż wygenerowany plik pakietu usługi (<project-name.cspkg>) do kontenera konta magazynu dla usługi w chmurze.
Uwaga 16.
Pomimo tego, co zostało określone w instrukcjach, nie musisz przekazywać pliku konfiguracji usługi w chmurze (ServiceConfiguration.Cloud.cscfg). W tym miejscu należy przekazać tylko plik pakietu usługi.
Pobierz następujące wartości ze strony certyfikatu magazynu kluczy w witrynie Azure Portal:
Adres URL certyfikatu usługi Key Vault
Identyfikator subskrypcji
Nazwa grupy zasobów, w której wdrożono magazyn kluczy
Nazwa usługi dla magazynu kluczy
Pobierz przykładowy projekt (skompresowany plik archiwum) i wyodrębnij jego zawartość.
Otwórz plik SDKSample\CreateCloudService\CreateCloudService\LoginHelper.cs w edytorze tekstów. W metodzie InitializeServiceClient zastąp wartości tenantIdzmiennych , clientIdi clientCredentials string odpowiednio wartościami identyfikatora dzierżawy, identyfikatora aplikacji i wpisu tajnego aplikacji. Te wartości są wartościami skopiowanymi podczas rejestrowania aplikacji.
Otwórz plik SDKSample\CreateCloudService\CreateCloudService\Program.cs w edytorze tekstów. W metodzie Main zastąp niektóre zainicjowane wartości zmiennych zadeklarowanych na początku metody. W poniższej tabeli przedstawiono nazwy zmiennych i wartości, których należy użyć.
Nazwa zmiennej
Nowa wartość
m_subId
Identyfikator subskrypcji, która zawiera usługę w chmurze
csrgName
Nazwa grupy zasobów zawierającej usługę w chmurze
csName
Nazwa zasobu usługi w chmurze
kvrgName
Nazwa grupy zasobów zawierającej zasób magazynu kluczy
kvName
Nazwa zasobu magazynu kluczy
kvsubid
Identyfikator subskrypcji zawierającej magazyn kluczy (może się to różnić od identyfikatora subskrypcji usługi w chmurze)
secretidentifier
Adres URL certyfikatu magazynu kluczy
filename
Ścieżka lokalna do pliku konfiguracji usługi (ServiceConfiguration.Cloud.cscfg)
packageurl
Adres URL sygnatury dostępu współdzielonego dla pliku pakietu usługi (project-name.cspkg>)<
W okienku Eksplorator rozwiązań programu Visual Studio kliknij prawym przyciskiem myszy węzeł projektu, a następnie wybierz pozycję Zarządzaj pakietami NuGet. Na karcie Przeglądaj wyszukaj, wybierz i zainstaluj następujące pakiety:
Microsoft.Azure.Management.ResourceManager
Microsoft.Azure.Management.Compute
Microsoft.Azure.Management.Storage
Azure.Identity
Microsoft.Rest.ClientRuntime.Azure.Authentication
Uruchom projekt, a następnie zaczekaj na wyświetlenie komunikatów w okienku Dane wyjściowe . Jeśli w okienku zostanie wyświetlony komunikat "Exit with code 0", aktualizacja i wdrożenie powinny działać pomyślnie. Jeśli zostanie wyświetlony komunikat "Exit with code 1", może być konieczne sprawdzenie komunikatów o błędach w celu przejrzenia wszelkich problemów.
W programie Visual Studio musisz wprowadzić dwie zmiany konfiguracji. Skonfigurowano konfigurację usługi tak, aby kontekst lokalny był zgodny z kontekstem chmury, a następnie określasz, gdzie znajduje się magazyn kluczy.
W przypadku konfiguracji usługi skopiuj zawartość kontekstu chmury ( plik ServiceConfiguration.Cloud.cscfg ) i wklej je w kontekście lokalnym ( plik ServiceConfiguration.Local.cscfg ). Czy masz inną konfigurację, czy nadal potrzebujesz lokalnego pliku konfiguracji dla innych zastosowań? Jeśli dowolny warunek ma wartość true, zachowaj certificate elementy z istniejącego kontekstu lokalnego.
W okienku Eksplorator rozwiązań programu Visual Studio kliknij prawym przyciskiem myszy węzeł projektu, a następnie wybierz polecenie Publikuj. Przejdź do kreatora Publikowanie aplikacja systemu Azure, dopóki nie zostanie wyświetlona karta Ustawienia. Na tej karcie ustaw pole Magazynu kluczy na lokalizację, w której jest zapisywany magazyn kluczy. Na koniec wybierz przycisk Publikuj , a następnie poczekaj na zakończenie wdrożenia.
Po wprowadzeniu zmian konfiguracji klienci będą mogli komunikować się z witryną internetową usług w chmurze przy użyciu protokołu HTTPS. Jeśli certyfikat jest podpisany samodzielnie, przeglądarka może zgłosić ostrzeżenie, że certyfikat nie jest bezpieczny, ale przeglądarka nie zablokuje połączenia.