Udostępnij za pośrednictwem


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.

  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ższenia 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 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.

  4. 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...

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

    Publikowanie usługi w chmurze

  2. Wybierz Certyfikaty.

    Kliknij ikonę certyfikatów

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

    Kliknij element menu Przekaż

  4. 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.

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

  2. 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).

    Podgląd witryny

    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