Udostępnij za pośrednictwem


Connect to a secure service with the reverse proxy (Łączenie z bezpieczną usługą przy użyciu zwrotnego serwera proxy)

W tym artykule wyjaśniono, jak ustanowić bezpieczne połączenie między zwrotnym serwerem proxy i usługami, co umożliwia zakończenie bezpiecznego kanału. Aby dowiedzieć się więcej na temat zwrotnego serwera proxy, zobacz Reverse proxy in Azure Service Fabric (Zwrotny serwer proxy w usłudze Azure Service Fabric)

Ważne

Nawiązywanie połączenia z bezpiecznymi usługami jest obsługiwane tylko wtedy, gdy zwrotny serwer proxy jest skonfigurowany do nasłuchiwania przy użyciu protokołu HTTPS. W tym artykule przyjęto założenie, że tak jest. Zobacz Konfigurowanie zwrotnego serwera proxy w usłudze Azure Service Fabric, aby skonfigurować zwrotny serwer proxy w usłudze Service Fabric.

Bezpieczne nawiązywanie połączenia między zwrotnym serwerem proxy i usługami

Odwrotne uwierzytelnianie serwera proxy w usługach:

Zwrotny serwer proxy identyfikuje się z usługami przy użyciu certyfikatu. W przypadku klastrów platformy Azure certyfikat jest określony z właściwością reverseProxyCertificate w sekcji Typ zasobu Microsoft.ServiceFabric/clusters szablonu usługi Resource Manager. W przypadku klastrów autonomicznych certyfikat jest określany za pomocą właściwości ReverseProxyCertificate lub ReverseProxyCertificateCommonNames w sekcji Zabezpieczenia ClusterConfig.json. Aby dowiedzieć się więcej, zobacz Włączanie zwrotnego serwera proxy w autonomicznych klastrach.

Usługi mogą zaimplementować logikę w celu zweryfikowania certyfikatu przedstawionego przez zwrotny serwer proxy. Usługi mogą określać szczegóły zaakceptowanego certyfikatu klienta jako ustawienia konfiguracji w pakiecie konfiguracji. Można to odczytać w czasie wykonywania i użyć do zweryfikowania certyfikatu przedstawionego przez zwrotny serwer proxy. Zobacz Zarządzanie parametrami aplikacji, aby dodać ustawienia konfiguracji.

Zwrotny serwer proxy weryfikując tożsamość usługi za pośrednictwem certyfikatu przedstawionego przez usługę:

Zwrotny serwer proxy obsługuje następujące zasady w celu przeprowadzenia weryfikacji certyfikatów serwera certyfikatów przedstawionych przez usługi: None, ServiceCommonNameAndIssuer i ServiceCertificateThumbprints. Aby wybrać zasady dla zwrotnego serwera proxy do użycia, określ wartość ApplicationCertificateValidationPolicy w sekcji ApplicationGateway/Http w obszarze fabricSettings.

W następnej sekcji przedstawiono szczegóły konfiguracji dla każdej z tych opcji.

Opcje weryfikacji certyfikatu usługi

  • Brak: Zwrotny serwer proxy pomija weryfikację certyfikatu usługi proxied i ustanawia bezpieczne połączenie. To jest zachowanie domyślne. Określ wartość ApplicationCertificateValidationPolicy z wartością None w sekcji ApplicationGateway/Http .

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                   {
                     "name": "ApplicationCertificateValidationPolicy",
                     "value": "None"
                   }
                 ]
               }
             ],
             ...
    }
    
  • ServiceCommonNameAndIssuer: Zwrotny serwer proxy weryfikuje certyfikat przedstawiony przez usługę na podstawie nazwy pospolitej certyfikatu i odcisku palca natychmiastowego wystawcy: określ wartość ApplicationCertificateValidationPolicy z wartością ServiceCommonNameAndIssuer w sekcji ApplicationGateway/Http .

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                   {
                     "name": "ApplicationCertificateValidationPolicy",
                     "value": "ServiceCommonNameAndIssuer"
                   }
                 ]
               }
             ],
             ...
    }
    

    Aby określić listę nazwy pospolitej usługi i odcisków palca wystawcy, dodaj sekcję ApplicationGateway/Http/ServiceCommonNameAndIssuer w obszarze fabricSettings, jak pokazano poniżej. W tablicy parametrów można dodać wiele par pospolitych certyfikatów i odcisku palca wystawcy .

    Jeśli zwrotny serwer proxy punktu końcowego łączy się z prezentowaniem certyfikatu o nazwie pospolitej i odcisku palca wystawcy jest zgodny z dowolną wartością określoną w tym miejscu, zostanie ustanowiony kanał TLS. Po niepowodzeniu dopasowania do szczegółów certyfikatu zwrotnego serwera proxy żądanie klienta kończy się niepowodzeniem z kodem stanu 502 (zła brama). Wiersz stanu HTTP będzie również zawierać frazę "Nieprawidłowy certyfikat SSL".

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http/ServiceCommonNameAndIssuer",
                 "parameters": [
                   {
                     "name": "WinFabric-Test-Certificate-CN1",
                     "value": "b3 44 9b 01 8d 0f 68 39 a2 c5 d6 2b 5b 6c 6a c8 22 b4 22 11"
                   },
                   {
                     "name": "WinFabric-Test-Certificate-CN2",
                     "value": "b3 44 9b 01 8d 0f 68 39 a2 c5 d6 2b 5b 6c 6a c8 22 11 33 44"
                   }
                 ]
               }
             ],
             ...
    }
    
  • ServiceCertificateThumbprints: Zwrotny serwer proxy zweryfikuje certyfikat usługi proxied na podstawie odcisku palca. Tę trasę można wybrać, gdy usługi są skonfigurowane przy użyciu certyfikatów z podpisem własnym: określ wartość ApplicationCertificateValidationPolicy z wartością ServiceCertificateThumbprints w sekcji ApplicationGateway/Http.

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                   {
                     "name": "ApplicationCertificateValidationPolicy",
                     "value": "ServiceCertificateThumbprints"
                   }
                 ]
               }
             ],
             ...
    }
    

    Określ również odciski palca za pomocą wpisu ServiceCertificateThumbprints w sekcji ApplicationGateway/Http . Wiele odcisków palca można określić jako listę rozdzielaną przecinkami w polu wartości, jak pokazano poniżej:

    {
    "fabricSettings": [
               ...
               {
                 "name": "ApplicationGateway/Http",
                 "parameters": [
                     ...
                   {
                     "name": "ServiceCertificateThumbprints",
                     "value": "78 12 20 5a 39 d2 23 76 da a0 37 f0 5a ed e3 60 1a 7e 64 bf,78 12 20 5a 39 d2 23 76 da a0 37 f0 5a ed e3 60 1a 7e 64 b9"
                   }
                 ]
               }
             ],
             ...
    }
    

    Jeśli odcisk palca certyfikatu serwera jest wymieniony w tym wpisie konfiguracji, zwrotny serwer proxy zakończy się powodzeniem połączenia TLS. W przeciwnym razie kończy połączenie i kończy żądanie klienta niepowodzeniem z błędem 502 (zła brama). Wiersz stanu HTTP będzie również zawierać frazę "Nieprawidłowy certyfikat SSL".

Logika wyboru punktu końcowego, gdy usługi uwidaczniają zabezpieczenia, a także niezabezpieczone punkty końcowe

Usługa Service Fabric obsługuje konfigurowanie wielu punktów końcowych dla usługi. Aby uzyskać więcej informacji, zobacz Określanie zasobów w manifeście usługi.

Zwrotny serwer proxy wybiera jeden z punktów końcowych, aby przesłać dalej żądanie na podstawie parametru zapytania ListenerName w identyfikatorze URI usługi. Jeśli nie określono parametru ListenerName , zwrotny serwer proxy może wybrać dowolny punkt końcowy z listy punktów końcowych. W zależności od punktów końcowych skonfigurowanych dla usługi wybrany punkt końcowy może być punktem końcowym HTTP lub HTTPS. Mogą istnieć scenariusze lub wymagania, w których chcesz, aby zwrotny serwer proxy działał w trybie "tylko do zabezpieczenia"; oznacza to, że nie chcesz, aby bezpieczny zwrotny serwer proxy przesyłał żądania do niezabezpieczonych punktów końcowych. Aby ustawić zwrotny serwer proxy w trybie tylko do zabezpieczenia, określ wpis konfiguracji SecureOnlyMode z wartością true w sekcji ApplicationGateway/Http.

{
"fabricSettings": [
          ...
          {
            "name": "ApplicationGateway/Http",
            "parameters": [
                ...
              {
                "name": "SecureOnlyMode",
                "value": true
              }
            ]
          }
        ],
        ...
}

Uwaga

W przypadku działania w trybie SecureOnlyMode, jeśli klient określił wartość ListenerName odpowiadającą punktowi końcowemu HTTP (niezabezpieczone), zwrotny serwer proxy kończy się niepowodzeniem żądania z kodem stanu HTTP 404 (Nie znaleziono).

Konfigurowanie uwierzytelniania certyfikatu klienta za pośrednictwem zwrotnego serwera proxy

Zakończenie protokołu TLS odbywa się na zwrotnym serwerze proxy, a wszystkie dane certyfikatu klienta zostaną utracone. Aby usługi do przeprowadzania uwierzytelniania certyfikatu klienta, określ ustawienie ForwardClientCertificate w sekcji ApplicationGateway/Http .

  1. Gdy właściwość ForwardClientCertificate ma wartość false, zwrotny serwer proxy nie zażąda certyfikatu klienta podczas uzgadniania protokołu TLS z klientem. To jest zachowanie domyślne.

  2. Gdy właściwość ForwardClientCertificate ma wartość true, zwrotny serwer proxy żąda certyfikatu klienta podczas uzgadniania protokołu TLS z klientem. Następnie przekaże dane certyfikatu klienta w niestandardowym nagłówku HTTP o nazwie X-Client-Certificate. Wartość nagłówka to ciąg formatu PEM zakodowany w formacie base64 certyfikatu klienta. Usługa może zakończyć się powodzeniem/niepowodzeniem żądania z odpowiednim kodem stanu po sprawdzeniu danych certyfikatu. Jeśli klient nie przedstawia certyfikatu, zwrotny serwer proxy przekazuje pusty nagłówek i umożliwia usłudze obsługę przypadku.

Uwaga

Zwrotny serwer proxy działa tylko jako usługa przekazywania. Nie przeprowadzi żadnej weryfikacji certyfikatu klienta.

Następne kroki