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 .
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.
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
- Konfigurowanie i konfigurowanie zwrotnego serwera proxy w klastrze.
- Zobacz Konfigurowanie zwrotnego serwera proxy w celu nawiązania połączenia z bezpiecznymi usługami
- Zobacz przykład komunikacji HTTP między usługami w przykładowym projekcie w witrynie GitHub.
- Zdalne wywołania procedur za pomocą komunikacji zdalnej usług Reliable Services
- Internetowy interfejs API korzystający z interfejsu OWIN w usługach Reliable Services
- Zarządzanie certyfikatami klastra