Udostępnij za pośrednictwem


Ochrona komunikatów za pomocą zabezpieczeń transportu

W tej sekcji omówiono zabezpieczenia transportu kolejkowania komunikatów (MSMQ), których można użyć do zabezpieczania komunikatów wysyłanych do kolejki.

Uwaga

Przed przeczytaniem tego tematu zaleca się zapoznanie się z tematem Pojęcia dotyczące zabezpieczeń.

Poniższa ilustracja przedstawia koncepcyjny model komunikacji w kolejce przy użyciu programu Windows Communication Foundation (WCF). Ta ilustracja i terminologia służą do wyjaśnienia pojęć związanych z bezpieczeństwem transportu.

Queued Application Diagram

Podczas wysyłania komunikatów w kolejce przy użyciu programu WCF z NetMsmqBindingprogramem komunikat WCF jest dołączany jako treść komunikatu MSMQ. Zabezpieczenia transportu zabezpiecza cały komunikat MSMQ (nagłówki lub właściwości wiadomości MSMQ i treść komunikatu). Ponieważ jest to treść komunikatu MSMQ, użycie zabezpieczeń transportu zabezpiecza również komunikat WCF.

Kluczową koncepcją zabezpieczeń transportu jest to, że klient musi spełnić wymagania dotyczące zabezpieczeń, aby uzyskać komunikat do kolejki docelowej. Jest to w przeciwieństwie do zabezpieczeń komunikatów, gdzie komunikat jest zabezpieczony dla aplikacji, która odbiera komunikat.

Bezpieczeństwo transportu przy użyciu protokołu NetMsmqBinding MSMQ i MsmqIntegrationBinding wpływa na sposób zabezpieczania komunikatów MSMQ między kolejką transmisji a kolejką docelową, w której jest to zabezpieczone:

  • Podpisanie komunikatu w celu upewnienia się, że nie zostało naruszone.

  • Szyfrowanie komunikatu w celu upewnienia się, że nie można go zobaczyć ani manipulować. Jest to zalecane, ale opcjonalne.

  • Docelowy menedżer kolejek, który identyfikuje nadawcę komunikatu pod kątem odrzucenia.

W msMQ, niezależnie od uwierzytelniania, kolejka docelowa ma listę kontroli dostępu (ACL), aby sprawdzić, czy klient ma uprawnienia do wysyłania komunikatu do kolejki docelowej. Aplikacja odbierającego jest również sprawdzana pod kątem uprawnień do odbierania komunikatu z kolejki docelowej.

Właściwości zabezpieczeń transportu WCF MSMQ

Usługa MSMQ używa zabezpieczeń systemu Windows do uwierzytelniania. Używa identyfikatora zabezpieczeń systemu Windows (SID) do identyfikowania klienta i używa usługi katalogowej Active Directory jako urzędu certyfikacji podczas uwierzytelniania klienta. Wymaga to zainstalowania programu MSMQ z integracją usługi Active Directory. Ponieważ identyfikator SID domeny systemu Windows służy do identyfikowania klienta, ta opcja zabezpieczeń ma znaczenie tylko wtedy, gdy zarówno klient, jak i usługa są częścią tej samej domeny systemu Windows.

Usługa MSMQ umożliwia również dołączanie certyfikatu z komunikatem, który nie jest zarejestrowany w usłudze Active Directory. W takim przypadku gwarantuje, że komunikat został podpisany przy użyciu dołączonego certyfikatu.

Program WCF udostępnia obie te opcje w ramach zabezpieczeń transportu MSMQ i stanowi kluczowy element dla zabezpieczeń transportu.

Domyślnie zabezpieczenia transportu są włączone.

Biorąc pod uwagę te podstawy, w poniższych sekcjach szczegółowo opisano właściwości zabezpieczeń transportu powiązane z elementami NetMsmqBinding i MsmqIntegrationBinding.

Tryb uwierzytelniania MSMQ

Określa MsmqAuthenticationMode , czy używać zabezpieczeń domeny systemu Windows, czy zewnętrznych zabezpieczeń opartych na certyfikatach w celu zabezpieczenia komunikatu. W obu trybach uwierzytelniania kanał transportu w kolejce WCF używa CertificateValidationMode określonego w konfiguracji usługi. Tryb weryfikacji certyfikatu określa mechanizm używany do sprawdzania ważności certyfikatu.

Po włączeniu zabezpieczeń transportu ustawieniem domyślnym jest WindowsDomain.

Tryb uwierzytelniania domeny systemu Windows

Wybór korzystania z zabezpieczeń systemu Windows wymaga integracji z usługą Active Directory. WindowsDomain jest domyślnym trybem zabezpieczeń transportu. Po ustawieniu tego ustawienia kanał WCF dołącza identyfikator SID systemu Windows do komunikatu MSMQ i używa certyfikatu wewnętrznego uzyskanego z usługi Active Directory. Usługa MSMQ używa tego wewnętrznego certyfikatu do zabezpieczenia komunikatu. Menedżer odbierających kolejek używa usługi Active Directory do wyszukiwania i znajdowania zgodnego certyfikatu w celu uwierzytelnienia klienta i sprawdza, czy identyfikator SID jest również zgodny z tym klientem. Ten krok uwierzytelniania jest wykonywany, jeśli certyfikat wygenerowany wewnętrznie w WindowsDomain przypadku trybu uwierzytelniania lub wygenerowany zewnętrznie w Certificate przypadku trybu uwierzytelniania jest dołączony do komunikatu, nawet jeśli kolejka docelowa nie jest oznaczona jako wymagająca uwierzytelniania.

Uwaga

Podczas tworzenia kolejki można oznaczyć kolejkę jako uwierzytelnianą kolejkę, aby wskazać, że kolejka wymaga uwierzytelnienia klienta wysyłającego komunikaty do kolejki. Dzięki temu w kolejce nie są akceptowane żadne nieuwierzytelnione komunikaty.

Identyfikator SID dołączony do komunikatu służy również do sprawdzania listy ACL kolejki docelowej w celu zapewnienia, że klient ma uprawnienia do wysyłania komunikatów do kolejki.

Tryb uwierzytelniania certyfikatu

Wybór trybu uwierzytelniania certyfikatu nie wymaga integracji z usługą Active Directory. W niektórych przypadkach, na przykład gdy msMQ jest zainstalowana w trybie grupy roboczej (bez integracji z usługą Active Directory) lub w przypadku używania protokołu transferu SOAP Reliable Messaging Protocol (SRMP) do wysyłania komunikatów do kolejki, działa tylko Certificate .

Podczas wysyłania komunikatu programu WCF za pomocą Certificateprogramu kanał WCF nie dołącza identyfikatora SID systemu Windows do komunikatu MSMQ. W związku z tym lista ACL kolejki docelowej musi zezwalać na Anonymous dostęp użytkowników do wysyłania do kolejki. Menedżer odbierających kolejek sprawdza, czy komunikat MSMQ został podpisany przy użyciu certyfikatu, ale nie wykonuje żadnego uwierzytelniania.

Certyfikat z jego oświadczeniami i informacjami o tożsamości jest wypełniany przez ServiceSecurityContext kanał transportu w kolejce WCF. Usługa może używać tych informacji do przeprowadzania własnego uwierzytelniania nadawcy.

Poziom ochrony MSMQ

Poziom ochrony określa sposób ochrony komunikatu MSMQ, aby upewnić się, że nie został on naruszony. Jest on określony we MsmqProtectionLevel właściwości . Domyślna wartość to Sign.

Poziom ochrony podpisywania

Komunikat MSMQ jest podpisany przy użyciu wewnętrznie wygenerowanego certyfikatu podczas korzystania z trybu uwierzytelniania lub certyfikatu wygenerowanego zewnętrznie podczas korzystania WindowsDomain z Certificate trybu uwierzytelniania.

Poziom ochrony podpisywania i szyfrowania

Komunikat MSMQ jest podpisany przy użyciu certyfikatu wygenerowanego wewnętrznie podczas korzystania z trybu uwierzytelniania lub certyfikatu wygenerowanego zewnętrznie podczas korzystania WindowsDomain z Certificate trybu uwierzytelniania.

Oprócz podpisania komunikatu komunikat MSMQ jest szyfrowany przy użyciu klucza publicznego certyfikatu uzyskanego z usługi Active Directory, który należy do odbierającego menedżera kolejek hostujących kolejkę docelową. Menedżer kolejki wysyłania gwarantuje, że komunikat MSMQ jest szyfrowany podczas przesyłania. Menedżer odbierających kolejek odszyfrowuje komunikat MSMQ przy użyciu klucza prywatnego certyfikatu wewnętrznego i przechowuje komunikat w kolejce (jeśli jest uwierzytelniony i autoryzowany) w postaci zwykłego tekstu.

Uwaga

Aby zaszyfrować komunikat, wymagany jest dostęp do usługi Active Directory (UseActiveDirectory właściwość NetMsmqBinding musi być ustawiona na true) i może być używana z parametrami Certificate i WindowsDomain.

Brak poziomu ochrony

Jest to dorozumiane, gdy MsmqProtectionLevel jest ustawiona wartość None. Nie może to być prawidłowa wartość dla innych trybów uwierzytelniania.

Uwaga

Jeśli komunikat MSMQ jest podpisany, msMQ sprawdza, czy komunikat jest podpisany przy użyciu dołączonego certyfikatu (wewnętrznego lub zewnętrznego) niezależnie od stanu kolejki, czyli kolejki uwierzytelnionej, czy nie.

Algorytm szyfrowania MSMQ

Algorytm szyfrowania określa algorytm używany do szyfrowania komunikatu MSMQ w sieci. Ta właściwość jest używana tylko wtedy, gdy MsmqProtectionLevel jest ustawiona na EncryptAndSignwartość .

Obsługiwane algorytmy to RC4Stream i AES wartością domyślną jest RC4Stream.

Algorytm można użyć AES tylko wtedy, gdy nadawca ma zainstalowaną wersję MSMQ 4.0. Ponadto kolejka docelowa musi być również hostowana w środowisku MSMQ 4.0.

Algorytm skrótu MSMQ

Algorytm wyznaczania wartości skrótu określa algorytm używany do tworzenia podpisu cyfrowego komunikatu MSMQ. Menedżer odbierających kolejek używa tego samego algorytmu do uwierzytelniania komunikatu MSMQ. Ta właściwość jest używana tylko wtedy, gdy MsmqProtectionLevel jest ustawiona na Sign wartość lub EncryptAndSign.

Obsługiwane algorytmy to MD5, , SHA1SHA256i SHA512. Wartość domyślna to SHA1.

Ze względu na problemy z kolizją z md5/SHA1 firma Microsoft zaleca sha256 lub lepszą.

Zobacz też