Message Queuing failed to verify digital signature of a message sent to queue.

Microsoft.MSMQ.2008R2.Rule.Alert.Event2196 (Rule)

Message Queuing failed to verify digital signature of a message sent to queue. The message was rejected. A negative arrival acknowledgement will be sent if requested by the sender.

Knowledge Base article:

Summary

Message Queuing failed to verify digital signature of a message sent to queue. The message was rejected. A negative arrival acknowledgement will be sent if requested by the sender

Causes

The message's signature could not be verified. This may indicate the following issues:

Resolutions

Confirm that the Message Queuing application is using a strong hash function and that it has a valid user certificate

Resolve weak hash function issues

By default, Message Queuing 4.0 does not support certain weaker security algorithms that were available in earlier versions of Message Queuing. Support for the weaker security algorithms can be enabled with a registry entry. For more information about the security algorithms that are supported by Message Queuing 4.0, see PROPID_M_HASH_ALG ( http://go.microsoft.com/fwlink/?LinkId=91702).

Message Queuing has historically offered four hashing algorithms with which to sign a message: MD2, MD4, MD5, and SHA1. In previous versions of Message Queuing, MD5 was the default for most message and SHA1 was used for Hypertext Transfer Protocol (HTTP) and multicast messaging, which were introduced in Message Queuing 3.0. SHA1 is now the default for all types of messages, because MD2, MD4, and MD5 have been deprecated as weak. Also, by default, Message Queuing 4.0 will neither accept messages that are signed with these weak algorithms nor generate them.

You can enable weaker algorithms on Message Queuing 4.0 to support any Message Queuing applications that require them by adding the registry key (not value) HKLM\SOFTWARE\Microsoft\MSMQ\Parameters\Security\WeakHashAlgorithms. If this registry key is not present, as is the case by default, all weaker algorithms are disabled. If this registry key is present, all weaker algorithms are enabled. To enable only certain weak algorithms, you must add the registry key and then specify the values of those weaker algorithms that you want to continue to disable.

Caution: Incorrectly editing the registry might severely damage your system. Before making changes to the registry, you should back up any valued data.

To perform the following procedures, you must have membership in Administrators, or you must have been delegated the appropriate authority.

To continue to disable certain weaker authentication algorithms:

If your Message Queuing application is running on Windows 7 and it chooses a weaker authentication algorithm, Message Queuing will override the choice and use SHA1 instead, by default. If you need to generate messages on Message Queuing 4.0 with one of the weak algorithms, there is a registry key that will turn off the upgrading and make Message Queuing 4.0 honor the algorithm requested by your code. Create a DWORD registry value named WeakHashAlgUpgrade under the key HKLM\SOFTWARE\Microsoft\MSMQ\Parameters\security and set it to 0, and then restart the MSMQ Service.

For more information, see the following resources:

Fix an issue with a bad user certificate

To fix an issue with a bad user certificate:

Fix a corrupted message

If you think the message was corrupted in transit, there is probably an issue with a level below Message Queuing.

Additional

If you continue to get this error, note any details in the event message, and then contact Microsoft Customer Service and Support (CSS). For information about how to contact CSS, see Enterprise Support ( http://go.microsoft.com/fwlink/?LinkId=52267).

For more information, see Event ID 2196 ( http://technet.microsoft.com/en-us/library/dd337461(WS.10).aspx)

Element properties:

TargetMicrosoft.MSMQ.2008R2.Servers
CategorySecurityHealth
EnabledFalse
Event_ID2196
Event Source$Target/Property[Type="Microsoft.MSMQ.2008R2.ServerRole"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Message Queuing failed to verify digital signature of a message sent to queue.
Event Description: {0}
Event LogApplication

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.EventProvider Default
Alert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.MSMQ.2008R2.Rule.Alert.Event2196" Enabled="false" Target="Microsoft.MSMQ.2008R2.Servers" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>SecurityHealth</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">2196</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="Microsoft.MSMQ.2008R2.ServerRole"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="Alert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertName/>
<AlertDescription/>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Microsoft.MSMQ.2008R2.Rule.Alert.Event2196.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
<Custom1/>
<Custom2/>
<Custom3/>
<Custom4/>
<Custom5/>
<Custom6/>
<Custom7/>
<Custom8/>
<Custom9/>
<Custom10/>
</WriteAction>
</WriteActions>
</Rule>