메시지 큐가 큐로 전송된 메시지의 디지털 서명을 검증하지 못했습니다.

Microsoft.MSMQ.10.0.Rule.Alert.Event2196 (Rule)

메시지 큐가 큐로 전송된 메시지의 디지털 서명을 검증하지 못했습니다. 메시지가 거부되었습니다. 보낸 사람이 요청할 경우 네거티브 도착 승인을 보냅니다.

Knowledge Base article:

요약

Message Queuing가 큐로 전송된 메시지의 디지털 서명을 검증하지 못했습니다. 메시지가 거부되었습니다. 보낸 사람이 요청할 경우 네거티브 도착 승인을 보냅니다.

원인

메시지의 서명을 검증할 수 없습니다. 다음과 같은 문제 때문일 수 있습니다.

해결 방법

메시지 큐 응용 프로그램이 강력한 해시 기능 및 유효한 사용자 인증서를 포함하고 있는지 확인

약한 해시 기능 문제 해결

기본적으로 메시지 큐 4.0은 메시지 큐의 이전 버전에서 사용 가능했던 보안이 약한 특정 알고리즘을 지원하지 않습니다. 더 약한 보안 알고리즘에 대한 지원은 레지스트리 항목을 통해 사용하도록 설정할 수 있습니다. 메시지 큐 4.0에서 지원하는 보안 알고리즘에 대한 자세한 내용은 PROPID_M_HASH_ALG( http://go.microsoft.com/fwlink/?LinkId=91702)를 참조하세요.

메시지 큐는 지금까지 메시지 서명에 사용할 수 있는 네 가지 해싱 알고리즘, 즉 MD2, MD4, MD5, SHA1을 제공했습니다. 메시지 큐의 이전 버전에서는 MD5가 메시지 대부분의 기본값이었고, SHA1은 HTTP(Hypertext Transfer Protocol) 및 멀티캐스트 메시지(메시지 큐 3.0에 도입)에 사용되었습니다. MD2, MD4, MD5는 약해서 사용되지 않으므로 이제 SHA1이 모든 메시지 유형의 기본값입니다. 또한 기본적으로 메시지 큐 4.0은 이런 약한 알고리즘으로 서명된 메시지를 수락하지도 않고 생성하지도 않습니다.

레지스트리 키(값 아님) HKLM\SOFTWARE\Microsoft\MSMQ\Parameters\Security\WeakHashAlgorithms를 추가하여, 메시지 큐 4.0의 더 약한 알고리즘이 이를 필요로 하는 메시지 큐 응용 프로그램을 지원하도록 할 수 있습니다. 이 레지스트리 키가 없으면(기본적으로 없음) 더 약한 알고리즘 모두를 사용하지 않습니다. 이 레지스트리 키가 있으면 더 약한 알고리즘이 모두 사용됩니다. 약한 알고리즘 중 일부만 사용하려면 레지스트리 키를 추가한 다음 계속해서 사용하지 않을 약한 알고리즘 값을 지정해야 합니다.

주의: 레지스트리를 잘못 편집하면 시스템이 심각하게 손상될 수 있습니다. 레지스트리를 변경하기 전에 중요한 데이터를 모두 백업해야 합니다.

다음 절차를 수행하려면 Administrators 그룹의 구성원이거나 적절한 권한을 위임받아야 합니다.

일부 더 약한 인증 알고리즘을 계속해서 사용하지 않으려면:

메시지 큐 응용 프로그램이 이 Windows 7에서 실행되며 더 약한 인증 알고리즘을 선택하면 메시지 큐가 선택 항목을 무시하고 대신 기본값인 SHA1을 사용합니다. 약한 알고리즘 중 하나로 메시지 큐 4.0에서 메시지를 생성해야 하는 경우, 업그레이드를 해제하고 메시지 큐 4.0이 코드에서 요청하는 알고리즘을 사용하도록 하는 레지스트리 키가 있습니다. HKLM\SOFTWARE\Microsoft\MSMQ\Parameters\security 키 아래에 WeakHashAlgUpgrade라는 이름의 DWORD 레지스트리 값을 만들고 0으로 설정한 다음 MSMQ 서비스를 다시 시작합니다.

자세한 내용은 다음 참조 자료를 참조하십시오.

잘못된 사용자 인증서의 문제 수정

잘못된 사용자 인증서의 문제를 수정하려면:

손상된 메시지 수정

메시지가 전송 중에 손상되었다고 생각되는 경우 메시지 큐 아래의 수준에 문제가 있을 수 있습니다.

추가 정보

이 오류가 계속 발생하면 이벤트 메시지의 세부 정보를 기록한 다음 Microsoft CSS(기술 지원 서비스)에 문의하세요. CSS에 문의하는 방법에 대한 자세한 내용은 엔터프라이즈 지원( http://go.microsoft.com/fwlink/?LinkId=52267)을 참조하세요.

자세한 내용은 이벤트 ID 2196( http://technet.microsoft.com/ko-kr/library/dd337461(WS.10).aspx)을 참조하세요.

Element properties:

TargetMicrosoft.MSMQ.10.0.Servers
CategorySecurityHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
메시지 큐가 큐로 전송된 메시지의 디지털 서명을 검증하지 못했습니다.
이벤트 설명: {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.10.0.Rule.Alert.Event2196" Enabled="false" Target="Microsoft.MSMQ.10.0.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">EventSourceName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="Microsoft.MSMQ.10.0.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.10.0.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>