Konfigurowanie protokołu TLS dla aplikacji na platformie Azure

Ważne

Cloud Services (wersja klasyczna) jest teraz przestarzała dla nowych klientów i zostanie wycofana 31 sierpnia 2024 r. dla wszystkich klientów. Nowe wdrożenia powinny używać nowego modelu wdrażania opartego na usłudze Azure Resource Manager 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 opisane w tym zadaniu dotyczą usługi Azure Cloud Services; w przypadku usługi App Services zobacz to.

To zadanie używa wdrożenia produkcyjnego. Informacje na temat korzystania z wdrożenia przejściowego podano na końcu tego tematu.

Przeczytaj to najpierw, jeśli usługa w chmurze nie została jeszcze utworzona.

Krok 1. Uzyskiwanie certyfikatu TLS/SSL

Aby skonfigurować protokół TLS dla aplikacji, należy najpierw uzyskać certyfikat TLS/SSL podpisany przez urząd certyfikacji (CA), zaufanej innej firmy, która wystawia certyfikaty w tym celu. Jeśli jeszcze go nie masz, musisz go uzyskać 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. Aby móc uzyskiwać dostęp do usługi, musisz uzyskać niestandardową nazwę domeny. W przypadku żądania 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ć co najmniej 2048-bitowego szyfrowania.

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 należy dodać punkt końcowy HTTPS. W związku z tym należy zaktualizować pliki konfiguracji usługi i definicji usługi.

  1. 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ższone Tylko procesy z podwyższonym poziomem uprawnień mogą uzyskiwać dostęp do klucza prywatnego.
  2. 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>
    
  3. W pliku definicji usługi dodaj element Binding w sekcji Witryny . Ten element dodaje powiązanie HTTPS w celu mapowania 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 zostały ukończone; ale nadal musisz dodać informacje o certyfikacie do pliku konfiguracji usługi.

  4. W pliku konfiguracji usługi (CSCFG), ServiceConfiguration.Cloud.cscfg dodaj wartość Certyfikaty z wartością certyfikatu. 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ść dla algorytmu odcisku palca certyfikatu).

Teraz, gdy definicje usługi i pliki konfiguracji usługi zostały zaktualizowane, spakuj wdrożenie na potrzeby przekazywania na platformę Azure. Jeśli używasz pliku cspack, nie używaj flagi /generateConfigurationFile , ponieważ spowoduje to zastąpienie właśnie wstawionych informacji o certyfikacie.

Krok 3. Przekazywanie certyfikatu

Połącz się z Azure Portal i...

  1. W sekcji Wszystkie zasoby portalu wybierz usługę w chmurze.

    Publikowanie usługi w chmurze

  2. Kliknij pozycję Certyfikaty.

    Kliknij ikonę certyfikatów

  3. Kliknij pozycję Przekaż w górnej części obszaru certyfikatów.

    Kliknij element menu Przekaż

  4. Podaj plik, hasło, a następnie kliknij 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.

  1. Kliknij adres URL witryny , aby otworzyć przeglądarkę internetową.

    Kliknij adres URL witryny

  2. W przeglądarce internetowej zmodyfikuj link tak, 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żesz zignorować błąd. (Inną opcją jest dodanie certyfikatu z podpisem własnym do magazynu certyfikatów zaufanego urzędu certyfikacji użytkownika).

    Podgląd witryny

    Porada

    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, ponownie spakuj aplikację i zaktualizuj wdrożenie etapowe, aby użyć nowego pakietu.

Następne kroki