Delen via


Berichten beveiligen met transportbeveiliging

In deze sectie wordt de transportbeveiliging van Message Queuing (MSMQ) besproken die u kunt gebruiken om berichten te beveiligen die naar een wachtrij worden verzonden.

Notitie

Voordat u dit onderwerp leest, is het raadzaam om beveiligingsconcepten te lezen.

In de volgende afbeelding ziet u een conceptueel model van communicatie in de wachtrij met behulp van WCF (Windows Communication Foundation). Deze illustratie en terminologie worden gebruikt om transportbeveiligingsconcepten uit te leggen.

Queued Application Diagram

Wanneer u berichten in de wachtrij verzendt met WCF met NetMsmqBinding, wordt het WCF-bericht als hoofdtekst van het MSMQ-bericht gekoppeld. Transportbeveiliging beveiligt het hele MSMQ-bericht (MSMQ-berichtkoppen of -eigenschappen en de berichttekst). Omdat het de hoofdtekst van het MSMQ-bericht is, wordt het WCF-bericht ook beveiligd met behulp van transportbeveiliging.

Het belangrijkste concept achter transportbeveiliging is dat de client moet voldoen aan de beveiligingsvereisten om het bericht naar de doelwachtrij te krijgen. Dit is in tegenstelling tot berichtbeveiliging, waarbij het bericht is beveiligd voor de toepassing die het bericht ontvangt.

Transportbeveiliging met behulp van NetMsmqBinding en MsmqIntegrationBinding beïnvloedt hoe MSMQ-berichten worden beveiligd tijdens de overdracht tussen de transmissiewachtrij en de doelwachtrij waar beveiligd impliceert:

  • Het bericht ondertekenen om ervoor te zorgen dat er niet met het bericht is geknoeid.

  • Versleuteling van het bericht om ervoor te zorgen dat het niet kan worden gezien of gemanipuleerd. Dit wordt aanbevolen, maar optioneel.

  • De doelwachtrijbeheerder die de afzender van het bericht identificeert voor niet-weerlegbaarheid.

In MSMQ, onafhankelijk van verificatie, heeft de doelwachtrij een toegangsbeheerlijst (ACL) om te controleren of de client gemachtigd is om het bericht naar de doelwachtrij te verzenden. De ontvangende toepassing wordt ook gecontroleerd op toestemming om het bericht van de doelwachtrij te ontvangen.

WCF MSMQ Transport Security Properties

MSMQ maakt gebruik van Windows-beveiliging voor verificatie. Deze maakt gebruik van de Windows-beveiligings-id (SID) om de client te identificeren en gebruikt Active Directory Directory-adreslijstservice als certificeringsinstantie bij het verifiëren van de client. Hiervoor moet MSMQ worden geïnstalleerd met Active Directory-integratie. Omdat de WINDOWS-domein-SID wordt gebruikt om de client te identificeren, is deze beveiligingsoptie alleen zinvol wanneer zowel de client als de service deel uitmaken van hetzelfde Windows-domein.

MSMQ biedt ook de mogelijkheid om een certificaat te koppelen aan het bericht dat niet is geregistreerd bij Active Directory. In dit geval zorgt het ervoor dat het bericht is ondertekend met behulp van het bijgevoegde certificaat.

WCF biedt beide opties als onderdeel van MSMQ-transportbeveiliging en ze zijn de belangrijkste draai voor transportbeveiliging.

Transportbeveiliging is standaard ingeschakeld.

Gezien deze basisprincipes worden in de volgende secties de eigenschappen van transportbeveiliging beschreven die zijn gebundeld met NetMsmqBinding en MsmqIntegrationBinding.

MSMQ-verificatiemodus

De MsmqAuthenticationMode dicteert of u de Windows-domeinbeveiliging of een externe beveiliging op basis van een certificaat wilt gebruiken om het bericht te beveiligen. In beide verificatiemodi gebruikt het transportkanaal in de wachtrij van WCF de CertificateValidationMode opgegeven in de serviceconfiguratie. De certificaatvalidatiemodus geeft het mechanisme aan dat wordt gebruikt om de geldigheid van het certificaat te controleren.

Wanneer transportbeveiliging is ingeschakeld, is WindowsDomainde standaardinstelling.

Modus Windows-domeinverificatie

Voor de keuze voor het gebruik van Windows-beveiliging is Active Directory-integratie vereist. WindowsDomain is de standaardbeveiligingsmodus voor transport. Wanneer dit is ingesteld, koppelt het WCF-kanaal de Windows-SID aan het MSMQ-bericht en gebruikt het interne certificaat dat is verkregen uit Active Directory. MSMQ gebruikt dit interne certificaat om het bericht te beveiligen. De ontvangende wachtrijbeheerder gebruikt Active Directory om een overeenkomend certificaat te zoeken en te vinden om de client te verifiëren en controleert of de SID ook overeenkomt met die van de client. Deze verificatiestap wordt uitgevoerd als een certificaat, intern gegenereerd in het geval van WindowsDomain verificatiemodus of extern gegenereerd in het geval van Certificate verificatiemodus, wordt gekoppeld aan het bericht, zelfs als de doelwachtrij niet is gemarkeerd als verificatie vereist.

Notitie

Wanneer u een wachtrij maakt, kunt u de wachtrij markeren als een geverifieerde wachtrij om aan te geven dat de wachtrij verificatie vereist van de client die berichten naar de wachtrij verzendt. Dit zorgt ervoor dat er geen niet-geverifieerde berichten in de wachtrij worden geaccepteerd.

De SID die aan het bericht is gekoppeld, wordt ook gebruikt om te controleren op basis van de ACL van de doelwachtrij om ervoor te zorgen dat de client de bevoegdheid heeft om berichten naar de wachtrij te verzenden.

Verificatiemodus voor certificaten

Voor de keuze voor het gebruik van de verificatiemodus voor certificaten is geen Active Directory-integratie vereist. In sommige gevallen, zoals wanneer MSMQ is geïnstalleerd in de werkgroepmodus (zonder Active Directory-integratie) of wanneer u het SOAP Reliable Messaging Protocol (SRMP) overdrachtsprotocol gebruikt om berichten naar de wachtrij te verzenden, werkt alleen Certificate .

Wanneer u een WCF-bericht verzendt met Certificate, wordt er geen Windows-SID aan het MSMQ-bericht gekoppeld aan het WCF-kanaal. Als zodanig moet de ACL van de doelwachtrij gebruikerstoegang toestaan Anonymous om naar de wachtrij te verzenden. De ontvangende wachtrijbeheer controleert of het MSMQ-bericht is ondertekend met het certificaat, maar voert geen verificatie uit.

Het certificaat met de bijbehorende claims en identiteitsgegevens wordt ingevuld in het ServiceSecurityContext transportkanaal in de wachtrij van WCF. De service kan deze informatie gebruiken om een eigen verificatie van de afzender uit te voeren.

MSMQ-beveiligingsniveau

Het beveiligingsniveau bepaalt hoe het MSMQ-bericht moet worden beveiligd om ervoor te zorgen dat er niet mee wordt geknoeid. Deze is opgegeven in de MsmqProtectionLevel eigenschap. De standaardwaarde is Sign.

Niveau voor ondertekeningsbeveiliging

Het MSMQ-bericht wordt ondertekend met behulp van het intern gegenereerde certificaat wanneer u WindowsDomain de verificatiemodus of een extern gegenereerd certificaat gebruikt wanneer u de verificatiemodus gebruikt Certificate .

Beveiligingsniveau ondertekenen en versleutelen

Het MSMQ-bericht wordt ondertekend met behulp van het intern gegenereerde certificaat wanneer u WindowsDomain de verificatiemodus of het extern gegenereerde certificaat gebruikt wanneer u de verificatiemodus gebruikt Certificate .

Naast het ondertekenen van het bericht, wordt het MSMQ-bericht versleuteld met behulp van de openbare sleutel van het certificaat dat is verkregen uit Active Directory die deel uitmaakt van de ontvangende wachtrijbeheerder die als host fungeert voor de doelwachtrij. Het verzenden van wachtrijbeheer zorgt ervoor dat het MSMQ-bericht tijdens overdracht wordt versleuteld. De ontvangende wachtrijbeheerder ontsleutelt het MSMQ-bericht met behulp van de persoonlijke sleutel van het interne certificaat en slaat het bericht op in de wachtrij (indien geverifieerd en geautoriseerd) in duidelijke tekst.

Notitie

Voor het versleutelen van het bericht is Active Directory-toegang vereist (UseActiveDirectory eigenschap van NetMsmqBinding moet worden ingesteld op true) en kan worden gebruikt met zowel CertificateWindowsDomainals .

Geen beveiligingsniveau

Dit wordt geïmpliceerd wanneer MsmqProtectionLevel deze is ingesteld op None. Dit kan geen geldige waarde zijn voor andere verificatiemodi.

Notitie

Als het MSMQ-bericht is ondertekend, controleert MSMQ of het bericht is ondertekend met het bijgevoegde certificaat (intern of extern) onafhankelijk van de status van de wachtrij, dat wil gezegd, geverifieerde wachtrij of niet.

MSMQ-versleutelingsalgoritmen

Het versleutelingsalgoritmen specificeert het algoritme dat moet worden gebruikt voor het versleutelen van het MSMQ-bericht op de kabel. Deze eigenschap wordt alleen gebruikt als MsmqProtectionLevel deze is ingesteld op EncryptAndSign.

De ondersteunde algoritmen zijn RC4Stream en AES de standaardwaarde is RC4Stream.

U kunt het AES algoritme alleen gebruiken als de afzender MSMQ 4.0 heeft geïnstalleerd. Daarnaast moet de doelwachtrij ook worden gehost op MSMQ 4.0.

MSMQ Hash-algoritme

Het hash-algoritme geeft het algoritme op dat wordt gebruikt voor het maken van een digitale handtekening van het MSMQ-bericht. De ontvangende wachtrijbeheerder gebruikt hetzelfde algoritme om het MSMQ-bericht te verifiëren. Deze eigenschap wordt alleen gebruikt als MsmqProtectionLevel deze is ingesteld op Sign of EncryptAndSign.

De ondersteunde algoritmen zijn MD5, SHA1en SHA256SHA512. De standaardwaarde is SHA1.

Vanwege conflicten met MD5/SHA1 raadt Microsoft SHA256 of beter aan.

Zie ook