Sichern von Nachrichten mit TransportsicherheitSecuring Messages Using Transport Security

In diesem Abschnitt wird die Message Queuing (MSMQ)-Transportsicherheit näher erläutert, mit der Sie an eine Warteschlange gesendete Nachrichten sichern können.This section discusses Message Queuing (MSMQ) transport security that you can use to secure messages sent to a queue.

Hinweis

In diesem Thema lesen, wird empfohlen, vor dem Lesen Sie Schlüsselbegriffe der Sicherheit.Before reading through this topic, it is recommended that you read Security Concepts.

Die folgende Abbildung zeigt ein konzeptionelles Modell einer warteschlangenkommunikation mithilfe von Windows Communication Foundation (WCF).The following illustration provides a conceptual model of queued communication using Windows Communication Foundation (WCF). Diese Abbildung und die Terminologie dienen zum Beschreiben von Transportsicherheitskonzepten:This illustration and terminology is used to explain transport security concepts.

In der Warteschlange AnwendungsdiagrammQueued Application Diagram

Beim Senden von Nachrichten in der Warteschlange mithilfe von WCF mit NetMsmqBinding, die WCF-Nachricht als Text der MSMQ-Nachricht angefügt wird.When sending queued messages using WCF with NetMsmqBinding, the WCF message is attached as a body of the MSMQ message. Mit der Transportsicherheit wird die gesamte MSMQ-Nachricht (MSMQ-Nachrichtenheader oder Nachrichteneigenschaften und der Textkörper) gesichert.Transport security secures the entire MSMQ message (MSMQ message headers or properties and the message body). Da es sich um den Text der MSMQ-Nachricht handelt, sichert mithilfe der transportsicherheit auch die WCF-Nachricht.Because it is the body of the MSMQ message, using transport security also secures the WCF message.

Das Kernkonzept hinter der Transportsicherheit besteht darin, dass der Client die Sicherheitsanforderungen erfüllen muss, um die Nachricht in die Zielwarteschlange zu stellen.The key concept behind transport security is that the client has to meet security requirements to get the message to the target queue. Bei der Nachrichtensicherheit hingegen wird die Nachricht für die Anwendung gesichert, die die Nachricht empfängt.This is unlike Message security, where the message is secured for the application that receives the message.

Durch den Einsatz der Transportsicherheit mit NetMsmqBinding und MsmqIntegrationBinding wird bestimmt, wie MSMQ-Nachrichten bei der Übertragung von der Übertragungswarteschlange zur Zielwarteschlange gesichert werden. Sicherheit bedeutet hier:Transport security using NetMsmqBinding and MsmqIntegrationBinding impacts how MSMQ messages are secured in-transit between the transmission queue and the target queue where secured implies:

  • Signieren der Nachricht, um sicherzustellen, dass sie nicht verfälscht wurde.Signing the message to ensure it is not tampered with.

  • Verschlüsseln der Nachricht, um sicherzustellen, dass sie nicht angezeigt oder verfälscht werden kann.Encrypting the message to ensure that it cannot be seen or tampered with. Dies wird empfohlen, ist jedoch optional.This is recommended but optional.

  • Der Zielwarteschlangenmanager, der überprüft, dass der Sender der Nachricht wirklich der Absender ist.The target queue manager that identifies the sender of the message for non-repudiation.

In MSMQ hat die Zielwarteschlange, unabhängig von der Authentifizierung, eine Access Control List (ACL), anhand der überprüft wird, ob der Client die Berechtigung hat, die Nachricht an die Zielwarteschlange zu senden.In MSMQ, independent of authentication, the target queue has an access control list (ACL) to check whether the client has permission to send the message to the target queue. Die Empfängeranwendung wird ebenfalls daraufhin überprüft, ob sie die Berechtigung hat, die Nachricht aus der Zielwarteschlange zu empfangen.The receiving application is also checked for permission to receive the message from the target queue.

WCF MSMQ-TransportsicherheitseigenschaftenWCF MSMQ Transport Security Properties

MSMQ verwendet bei der Authentifizierung die Windows-Sicherheit.MSMQ uses Windows security for authentication. Es verwendet die Windows-Sicherheits-ID (SID), um den Client zu identifizieren, und nutzt beim Authentifizieren des Clients den Active Directory-Verzeichnisdienst als Zertifizierungsstelle.It uses the Windows security identifier (SID) to identify the client and uses Active Directory directory service as the certificate authority when authenticating the client. Dabei muss MSMQ mit Active Directory-Integration installiert sein.This requires MSMQ to be installed with Active Directory integration. Da die Windows-Domänen-SID zum Identifizieren des Clients verwendet wird, ist diese Sicherheitsoption nur dann sinnvoll, wenn der Client und der Dienst Teil der gleichen Windows-Domäne sind.Because the Windows domain SID is used to identify the client, this security option is only meaningful when both the client and service are part of the same Windows domain.

MSMQ bietet zudem die Möglichkeit, ein Zertifikat an die Nachricht, die nicht beim Active Directory registriert ist, anzuhängen.MSMQ also provides the ability to attach a certificate with the message that is not registered with Active Directory. In diesem Fall wird dadurch sichergestellt, dass die Nachricht mit dem angehängten Zertifikat signiert wurde.In this case, it ensures that the message was signed using the attached certificate.

WCF bietet die beiden Optionen als Teil des MSMQ-transportsicherheit, und sie sind ein wichtiger Aspekt für die transportsicherheit.WCF provides both these options as part of MSMQ transport security and they are the key pivot for transport security.

Die Transportsicherheit ist standardmäßig aktiviert.By default, transport security is turned on.

Auf diesen Grundlagen basierend werden in den folgenden Abschnitten die Transportsicherheitseigenschaften gebündelt mit NetMsmqBinding und MsmqIntegrationBinding näher vorgestellt.Given these basics, the following sections detail transport security properties bundled with NetMsmqBinding and MsmqIntegrationBinding.

MSMQ-AuthentifizierungsmodusMSMQ Authentication Mode

Der MsmqAuthenticationMode bestimmt, ob die Windows-Domänensicherheit oder eine externe Zertifikats-basierte Sicherheit zum Sichern der Nachricht verwendet werden soll.The MsmqAuthenticationMode dictates whether to use the Windows domain security or an external certificate-based security to secure the message. In beiden Authentifizierungsmodi verwendet der WCF-Warteschlangentransport-Kanal der CertificateValidationMode in der Dienstkonfiguration angegeben.In both authentication modes, the WCF queued transport channel uses the CertificateValidationMode specified in the service configuration. Der Zertifikatsvalidierungsmodus legt den zu verwendenden Mechanismus fest, um die Gültigkeit des Zertifikats zu überprüfen.The certificate validation mode specifies the mechanism used to check the validity of the certificate.

Wenn die Transportsicherheit aktiviert ist, ist die Standardeinstellung WindowsDomain.When transport security is turned on, the default setting is WindowsDomain.

Windows-DomänenauthentifizierungsmodusWindows Domain Authentication Mode

Um die Windows-Sicherheit verwenden zu können, ist die Active Directory-Integration erforderlich.The choice of using Windows security requires Active Directory integration. WindowsDomain ist der standardmäßige Transportsicherheitsmodus.WindowsDomain is the default transport security mode. Wenn dies festgelegt ist, wird der WCF-Kanal fügt die Windows-SID an die MSMQ-Nachricht und verwendet das interne Zertifikat aus Active Directory abgerufen.When this is set, the WCF channel attaches the Windows SID to the MSMQ message and uses its internal certificate obtained from Active Directory. MSMQ verwendet dieses interne Zertifikat, um die Nachricht zu sichern.MSMQ uses this internal certificate to secure the message. Der Warteschlangenmanager, der die Nachricht empfängt, verwendet Active Directory, um ein entsprechendes Zertifikat zu suchen, mit dem der Client authentifiziert werden kann. Zugleich wird dadurch überprüft, dass die SID auch der des Clients entspricht.The receiving queue manager uses Active Directory to search and find a matching certificate to authenticate the client and checks that the SID also matches that of the client. Dieser Authentifizierungsschritt wird ausgeführt, wenn ein Zertifikat, sei es intern erstellt worden wie im Fall des WindowsDomain-Authentifizierungsmodus, oder extern wie im Fall des Certificate-Authentifizierungsmodus, an die Nachricht angehängt wird, selbst wenn für die Zielwarteschlange nicht festgelegt wurde, dass eine Authentifizierung notwendig ist.This authentication step is executed if a certificate, either internally generated in the case of WindowsDomain authentication mode or externally generated in the case of Certificate authentication mode, is attached to the message even if the target queue is not marked as requiring authentication.

Hinweis

Beim Erstellen einer Warteschlange können Sie die Warteschlange als authentifizierte Warteschlange kennzeichnen, um anzugeben, dass für die Warteschlange eine Authentifizierung des Clients, der die Nachricht an die Warteschlange sendet, erforderlich ist.When creating a queue, you can mark the queue as an authenticated queue to indicate that the queue requires authentication of the client sending messages to the queue. Dadurch wird sichergestellt, dass keine nicht authentifizierten Nachrichten in die Warteschlange aufgenommen werden.This ensures that no unauthenticated messages are accepted in the queue.

Die an die Nachricht angehängte SID wird ebenfalls zum Überprüfen der Zielwarteschlange anhand der ACL verwendet, um sicherzustellen, dass der Client die Berechtigung hat, die Nachrichten an die Warteschlange zu senden.The SID attached with the message is also used to check against the target queue's ACL to ensure that the client has the authority to send messages to the queue.

ZertifikatsauthentifizierungsmodusCertificate Authentication Mode

Für den Zertifikatsauthentifizierungsmodus ist keine Active Directory-Integration erforderlich.The choice of using certificate authentication mode does not require Active Directory integration. In einigen Fällen, z. B. wenn MSMQ im Arbeitsgruppenmodus installiert ist (ohne Active Directory-Integration) oder wenn zum Senden von Nachrichten an die Warteschlange das SOAP Reliable Messaging Protocol (SRMP)-Übertragungsprotokoll verwendet wird, kann nur der Certificate eingesetzt werden.In fact, in some cases, such as when MSMQ is installed in workgroup mode (without Active Directory integration) or when using the SOAP Reliable Messaging Protocol (SRMP) transfer protocol to send messages to the queue, only Certificate works.

Beim Senden einer WCF-Nachricht mit Certificate, der WCF-Kanal wird die Windows-SID nicht an die MSMQ-Nachricht angefügt.When sending a WCF message with Certificate, the WCF channel does not attach a Windows SID to the MSMQ message. Daher muss die Zielwarteschlangen-ACL den Anonymous Benutzerzugriff zum Senden an die Warteschlange zulassen.As such, the target queue ACL must allow for Anonymous user access to send to the queue. Der empfangende Warteschlangenmanager überprüft, ob die MSMQ-Nachricht mit dem Zertifikat signiert wurde, führt jedoch keine Authentifizierung durch.The receiving queue manager checks whether the MSMQ message was signed with the certificate but does not perform any authentication.

Das Zertifikat mit den enthaltenen Ansprüchen und Identitätsinformationen wird aufgefüllt, der ServiceSecurityContext vom WCF-Warteschlangentransport-Kanal.The certificate with its claims and identity information is populated in the ServiceSecurityContext by the WCF queued transport channel. Der Dienst kann diese Informationen zum Durchführen der eigenen Authentifizierung des Absenders verwenden.The service can use this information to perform its own authentication of the sender.

MSMQ-SchutzebeneMSMQ Protection Level

Die Schutzebene bestimmt, wie die MSMQ-Nachricht geschützt werden soll, um sicherzustellen, dass sie nicht manipuliert wird.The protection level dictates how to protect the MSMQ message to ensure that it is not tampered with. Sie wird in der MsmqProtectionLevel-Eigenschaft angegeben.It is specified in the MsmqProtectionLevel property. Der Standardwert ist Sign.The default value is Sign.

Signatur-SchutzebeneSign Protection Level

Die MSMQ-Nachricht wird mit dem intern generierten Zertifikat im WindowsDomain-Authentifizierungsmodus bzw. mit einem extern generierten Zertifikat im Certificate-Authentifizierungsmodus signiert.The MSMQ message is signed using the internally generated certificate when using WindowsDomain authentication mode or an externally generated certificate when using Certificate authentication mode.

Signatur- und VerschlüsselsungsschutzebeneSign and Encrypt Protection Level

Die MSMQ-Nachricht wird mit dem intern generierten Zertifikat im WindowsDomain-Authentifizierungsmodus bzw. mit einem extern generierten Zertifikat im Certificate-Authentifizierungsmodus signiert.The MSMQ message is signed using the internally generated certificate when using WindowsDomain authentication mode or externally generated certificate when using Certificate authentication mode.

Zusätzlich zum Signieren der Nachricht wird die MSMQ-Nachricht mit dem öffentlichen Schlüssel des Zertifikats aus Active Directory verschlüsselt, das zum empfangenden Warteschlangenmanager gehört, der Host der Zielwarteschlange ist.In addition to signing the message, the MSMQ message is encrypted using the public key of the certificate obtained from Active Directory that belongs to the receiving queue manager that hosts the target queue. Der sendende Warteschlangenmanager stellt sicher, dass die MSMQ-Nachricht bei der Übertragung verschlüsselt ist.The sending queue manager ensures that the MSMQ message is encrypted in transit. Der empfangende Warteschlangenmanager verschlüsselt die MSMQ-Nachricht mit dem privaten Schlüssel des internen Zertifikats und speichert die Nachricht in der Warteschlange (bei Authentifizierung und Autorisierung) als Klartext.The receiving queue manager decrypts the MSMQ message using the private key of its internal certificate and stores the message in the queue (if authenticated and authorized) in clear text.

Hinweis

Zum Verschlüsseln der Nachricht ist ein Active Directory-Zugriff erforderlich (UseActiveDirectory-Eigenschaft von NetMsmqBinding muss auf true festgelegt werden), der wiederum mit Certificate und WindowsDomain verwendet werden kann.To encrypt the message, Active Directory access is required (UseActiveDirectory property of NetMsmqBinding must be set to true) and can be used with both Certificate and WindowsDomain.

Ohne SchutzebeneNone Protection Level

Dies wird impliziert, wenn MsmqProtectionLevel auf None festgelegt wurde.This is implied when MsmqProtectionLevel is set to None. Dies ist kein gültiger Wert für andere Authentifizierungsmodi.This cannot be a valid value for any other authentication modes.

Hinweis

Wenn die MSMQ-Nachricht signiert wurde, überprüft MSMQ, ob die Nachricht mit dem angehängten Zertifikat (intern oder extern), das vom Status der Warteschlange (authentifiziert oder nicht authentifiziert) unabhängig ist, signiert wurde.If the MSMQ message is signed, MSMQ checks whether the message is signed with the attached certificate (internal or external) independent of the state of the queue, that is, authenticated queue or not.

MSMQ-VerschlüsselungsalgorithmusMSMQ Encryption Algorithm

Der Verschlüsselungsalgorithmus gibt den Algorithmus an, mit dem die MSMQ-Nachricht bei der Übertragung verschlüsselt werden soll.The encryption algorithm specifies the algorithm to use to encrypt the MSMQ message on the wire. Diese Eigenschaft wird nur verwendet, wenn MsmqProtectionLevel auf EncryptAndSign festgelegt wurde.This property is used only if MsmqProtectionLevel is set to EncryptAndSign.

Unterstützte Algorithmen sind:RC4Stream und AES, wobei RC4Stream der Standardwert ist.The supported algorithms are RC4Stream and AES and the default is RC4Stream.

Sie können den AES-Algorithmus nur verwenden, wenn der Sender MSMQ 4.0 installiert hat.You can use the AES algorithm only if the sender has MSMQ 4.0 installed. Darüber hinaus muss die Zielwarteschlange auf MSMQ 4.0 gehostet werden.In addition, the target queue must also be hosted on MSMQ 4.0.

MSMQ-HashalgorithmusMSMQ Hash Algorithm

Der Hashalgorithmus bestimmt den Algorithmus, mit dem eine digitale Signatur der MSMQ-Nachricht erstellt wird.The hash algorithm specifies the algorithm used to create a digital signature of the MSMQ message. Der empfangende Warteschlangenmanager verwendet den gleichen Algorithmus zum Authentifizieren der MSMQ-Nachricht.The receiving queue manager uses this same algorithm to authenticate the MSMQ message. Diese Eigenschaft wird nur verwendet, wenn MsmqProtectionLevel auf Sign oder EncryptAndSign festgelegt wurde.This property is used only if MsmqProtectionLevel is set to Sign or EncryptAndSign.

Es werden die folgenden Algorithmen unterstützt: MD5, SHA1, SHA256 und SHA512.The supported algorithms are MD5, SHA1, SHA256, and SHA512. Die Standardeinstellung ist SHA1.The default is SHA1.

Siehe auchSee Also

Message QueuingMessage Queuing
Begriffe der SicherheitSecurity Concepts
Sichern von Diensten und ClientsSecuring Services and Clients