메시지 큐가 큐로 전송된 메시지의 디지털 서명을 검증하지 못했습니다. 메시지가 거부되었습니다. 보낸 사람이 요청할 경우 네거티브 도착 승인을 보냅니다.
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 그룹의 구성원이거나 적절한 권한을 위임받아야 합니다.
일부 더 약한 인증 알고리즘을 계속해서 사용하지 않으려면:
레지스트리 편집기를 엽니다. 레지스트리 편집기를 열려면 [시작]을 클릭합니다. 검색 상자에 regedit를 입력하고 <Enter> 키를 누릅니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security로 이동합니다.
편집 메뉴에서 새로 만들기를 가리킨 다음 키를 클릭합니다.
새 레지스트리 키의 이름으로 WeakHashAlgorithms을 입력하고 Enter 키를 누릅니다.
WeakHashAlgorithms를 마우스 오른쪽 단추로 클릭하고, 새로 만들기를 가리키고, DWORD(32비트) 값을 클릭하고, 새 값의 이름을 입력합니다.
새 DWORD(32비트) 값을 두 번 클릭하고, 10진수를 클릭한 다음, 사용하지 않을 알고리즘에 대한 적절한 값을 값 데이터 형식에 입력합니다.
MD2의 경우 32769
MD4의 경우 32770
MD5의 경우 32771
MAC의 경우 32773
확인을 클릭하여 DWORD(32비트) 값 편집 대화 상자를 닫습니다.
사용하지 않을 추가 알고리즘에 대해 새 DWORD(32비트) 값을 만듭니다.
파일 메뉴에서 끝내기를 클릭하여 레지스트리 편집기를 닫습니다.
메시지 큐 응용 프로그램이 이 Windows 7에서 실행되며 더 약한 인증 알고리즘을 선택하면 메시지 큐가 선택 항목을 무시하고 대신 기본값인 SHA1을 사용합니다. 약한 알고리즘 중 하나로 메시지 큐 4.0에서 메시지를 생성해야 하는 경우, 업그레이드를 해제하고 메시지 큐 4.0이 코드에서 요청하는 알고리즘을 사용하도록 하는 레지스트리 키가 있습니다. HKLM\SOFTWARE\Microsoft\MSMQ\Parameters\security 키 아래에 WeakHashAlgUpgrade라는 이름의 DWORD 레지스트리 값을 만들고 0으로 설정한 다음 MSMQ 서비스를 다시 시작합니다.
자세한 내용은 다음 참조 자료를 참조하십시오.
PROPID_M_HASH_ALG( http://go.microsoft.com/fwlink/?LinkId=91702)
메시지 큐를 위한 인증( http://go.microsoft.com/fwlink/?LinkId=104934)
잘못된 사용자 인증서의 문제 수정
잘못된 사용자 인증서의 문제를 수정하려면:
도메인에 있는 컴퓨터에서 시작을 클릭합니다. 검색 상자에 compmgmt.msc를 입력하고 <Enter> 키를 누릅니다.
메시지가 나타나면 관리자 자격 증명을 입력하고 사용자 액세스 제어 메시지를 통해 계속 진행합니다.
메시지 큐 콘솔 트리(서비스 및 응용 프로그램\메시지 큐)로 이동합니다.
Message Queuing를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
사용자 인증서 탭을 클릭합니다.
보기를 클릭합니다.
인증되지 않은 메시지를 보내는 컴퓨터가 개인 인증서 목록에 있는지 확인합니다.
컴퓨터가 목록에 없으면 인증서가 등록되지 않은 것입니다.
인증서가 등록되지 않은 컴퓨터에서 1~7단계를 수행하여 이 문제를 수정할 수 있습니다. 그런 다음 6단계에서 보기 대신 등록을 클릭합니다.
손상된 메시지 수정
메시지가 전송 중에 손상되었다고 생각되는 경우 메시지 큐 아래의 수준에 문제가 있을 수 있습니다.
이 오류가 계속 발생하면 이벤트 메시지의 세부 정보를 기록한 다음 Microsoft CSS(기술 지원 서비스)에 문의하세요. CSS에 문의하는 방법에 대한 자세한 내용은 엔터프라이즈 지원( http://go.microsoft.com/fwlink/?LinkId=52267)을 참조하세요.
자세한 내용은 이벤트 ID 2196( http://technet.microsoft.com/ko-kr/library/dd337461(WS.10).aspx)을 참조하세요.
Target | Microsoft.MSMQ.10.0.Servers | ||
Category | SecurityHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
Alert | WriteAction | System.Health.GenerateAlert | Default |
<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>