Konfigurowanie protokołu TLS dla aplikacji na platformie Azure
Ważne
Usługi Cloud Services (wersja klasyczna) są teraz przestarzałe dla wszystkich klientów od 1 września 2024 r. Wszystkie istniejące uruchomione wdrożenia zostaną zatrzymane i zamknięte przez firmę Microsoft, a dane zostaną przypadkowo utracone od października 2024 r. Nowe wdrożenia powinny używać nowego modelu wdrażania opartego na usłudze Azure Resource Manager w usługach Azure Cloud Services (wsparcie dodatkowe).
Transport Layer Security (TLS), wcześniej znany jako szyfrowanie Secure Socket Layer (SSL), jest najczęściej używaną metodą zabezpieczania danych wysyłanych przez Internet. W tym typowym zadaniu omówiono sposób określania punktu końcowego HTTPS dla roli sieci Web oraz sposobu przekazywania certyfikatu TLS/SSL w celu zabezpieczenia aplikacji.
Uwaga
Procedury w tym zadaniu dotyczą usług Azure Cloud Services; aby uzyskać informacje o usłudze App Services, zobacz to.
To zadanie używa wdrożenia produkcyjnego. Informacje na temat korzystania z wdrożenia przejściowego są udostępniane na końcu tego artykułu.
Przeczytaj artykuł Jak utworzyć i wdrożyć usługę Azure Cloud Service (klasyczną), jeśli jeszcze nie utworzono usługi w chmurze.
Krok 1. Pobieranie certyfikatu TLS/SSL
Aby skonfigurować protokół TLS dla aplikacji, należy najpierw uzyskać certyfikat TLS/SSL podpisany przez urząd certyfikacji , zaufanego partnera, który wystawia certyfikaty w tym celu. Jeśli jeszcze go nie masz, musisz uzyskać go od firmy, która sprzedaje certyfikaty TLS/SSL.
Certyfikat musi spełniać następujące wymagania dotyczące certyfikatów TLS/SSL na platformie Azure:
- Certyfikat musi zawierać klucz publiczny.
- Certyfikat należy utworzyć na potrzeby wymiany kluczy, który można wyeksportować do pliku wymiany informacji osobistych (pfx).
- Nazwa podmiotu certyfikatu musi być zgodna z domeną używaną do uzyskiwania dostępu do usługi w chmurze. Nie można uzyskać certyfikatu TLS/SSL z urzędu certyfikacji dla domeny cloudapp.net. Podczas uzyskiwania dostępu do usługi należy uzyskać niestandardową nazwę domeny. Gdy żądasz certyfikatu od urzędu certyfikacji, nazwa podmiotu certyfikatu musi być zgodna z niestandardową nazwą domeny używaną do uzyskiwania dostępu do aplikacji. Jeśli na przykład nazwa domeny niestandardowej jest contoso.com zażądasz certyfikatu od urzędu certyfikacji dla *.contoso.com lub www.contoso.com.
- Certyfikat musi używać szyfrowania co najmniej 2048-bitowego.
Do celów testowych można utworzyć i użyć certyfikatu z podpisem własnym. Certyfikat z podpisem własnym nie jest uwierzytelniany za pośrednictwem urzędu certyfikacji i może używać domeny cloudapp.net jako adresu URL witryny internetowej. Na przykład następujące zadanie używa certyfikatu z podpisem własnym, w którym nazwa pospolita (CN) używana w certyfikacie jest sslexample.cloudapp.net.
Następnie należy uwzględnić informacje o certyfikacie w plikach definicji usługi i konfiguracji usługi.
Krok 2. Modyfikowanie definicji usługi i plików konfiguracji
Aplikacja musi być skonfigurowana do używania certyfikatu, a punkt końcowy HTTPS musi zostać dodany. W związku z tym należy zaktualizować pliki definicji usługi i konfiguracji usługi.
W środowisku deweloperskim otwórz plik definicji usługi (CSDEF), dodaj sekcję Certyfikaty w sekcji WebRole i dołącz następujące informacje o certyfikacie (i certyfikatach pośrednich):
<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>
Sekcja Certyfikaty definiuje nazwę certyfikatu, jego lokalizację i nazwę magazynu, w którym się znajduje.
Uprawnienia (
permissionLevel
atrybut) można ustawić na jedną z następujących wartości:Wartość uprawnienia opis limitedOrElevated (Ustawienie domyślne) Wszystkie procesy ról mogą uzyskiwać dostęp do klucza prywatnego. podwyższenia Tylko procesy z podwyższonym poziomem uprawnień mogą uzyskiwać dostęp do klucza prywatnego. W pliku definicji usługi dodaj element InputEndpoint w sekcji Punkty końcowe , aby włączyć protokół HTTPS:
<WebRole name="CertificateTesting" vmsize="Small"> ... <Endpoints> <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="SampleCertificate" /> </Endpoints> ... </WebRole>
W pliku definicji usługi dodaj element Binding w sekcji Witryny . Ten element dodaje powiązanie HTTPS w celu zamapowania punktu końcowego na lokację:
<WebRole name="CertificateTesting" vmsize="Small"> ... <Sites> <Site name="Web"> <Bindings> <Binding name="HttpsIn" endpointName="HttpsIn" /> </Bindings> </Site> </Sites> ... </WebRole>
Wszystkie wymagane zmiany w pliku definicji usługi są kompletne, ale nadal trzeba dodać informacje o certyfikacie do pliku konfiguracji usługi.
W pliku konfiguracji usługi (CSCFG), ServiceConfiguration.Cloud.cscfg dodaj wartość Certyfikaty z certyfikatem. Poniższy przykładowy kod zawiera szczegóły sekcji Certyfikaty , z wyjątkiem wartości odcisku palca.
<Role name="Deployment"> ... <Certificates> <Certificate name="SampleCertificate" thumbprint="9427befa18ec6865a9ebdc79d4c38de50e6316ff" thumbprintAlgorithm="sha1" /> <Certificate name="CAForSampleCertificate" thumbprint="79d4c38de50e6316ff9427befa18ec6865a9ebdc" thumbprintAlgorithm="sha1" /> </Certificates> ... </Role>
(W tym przykładzie użyto algorytmu sha1 dla algorytmu odcisku palca. Określ odpowiednią wartość algorytmu odcisku palca certyfikatu.
Teraz, gdy zaktualizowano pliki definicji usługi i konfiguracji usługi, spakuj wdrożenie do przekazania na platformę Azure. Jeśli używasz pliku cspack, nie używaj flagi /generateConfigurationFile , ponieważ zastępuje wstawione informacje o certyfikacie.
Krok 3. Przekazywanie certyfikatu
Połącz się z witryną Azure Portal i...
W sekcji Wszystkie zasoby portalu wybierz usługę w chmurze.
Wybierz Certyfikaty.
Wybierz pozycję Przekaż w górnej części obszaru certyfikatów.
Podaj plik, hasło, a następnie wybierz pozycję Przekaż w dolnej części obszaru wprowadzania danych.
Krok 4. Nawiązywanie połączenia z wystąpieniem roli przy użyciu protokołu HTTPS
Teraz, gdy wdrożenie jest uruchomione na platformie Azure, możesz nawiązać z nim połączenie przy użyciu protokołu HTTPS.
Wybierz adres URL witryny, aby otworzyć przeglądarkę internetową.
W przeglądarce internetowej zmodyfikuj link, aby używać protokołu HTTPS zamiast http, a następnie odwiedź stronę.
Uwaga
Jeśli używasz certyfikatu z podpisem własnym, podczas przechodzenia do punktu końcowego HTTPS skojarzonego z certyfikatem z podpisem własnym może zostać wyświetlony błąd certyfikatu w przeglądarce. Użycie certyfikatu podpisanego przez zaufany urząd certyfikacji eliminuje ten problem; w międzyczasie można zignorować błąd. (Inną opcją jest dodanie certyfikatu z podpisem własnym do magazynu certyfikatów zaufanego urzędu certyfikacji użytkownika).
Napiwek
Jeśli chcesz użyć protokołu TLS do wdrożenia przejściowego zamiast wdrożenia produkcyjnego, najpierw musisz określić adres URL używany do wdrożenia przejściowego. Po wdrożeniu usługi w chmurze adres URL w środowisku przejściowym jest określany przez identyfikator GUID identyfikatora wdrożenia w tym formacie:
https://deployment-id.cloudapp.net/
Utwórz certyfikat o nazwie pospolitej (CN) równej adresowi URL opartemu na identyfikatorze GUID (na przykład 328187776e774ceda8fc57609d404462.cloudapp.net). Użyj portalu, aby dodać certyfikat do przygotowanej usługi w chmurze. Następnie dodaj informacje o certyfikacie do plików CSDEF i CSCFG, przepakuj ponownie aplikację i zaktualizuj wdrożenie etapowe, aby używać nowego pakietu.
Następne kroki
- Ogólna konfiguracja usługi w chmurze.
- Dowiedz się, jak wdrożyć usługę w chmurze.
- Skonfiguruj niestandardową nazwę domeny.
- Zarządzanie usługą w chmurze.