Licensing Server failed due to cryptography error

LS_failed_due_to_cryptography_error_2000 (Rule)

Knowledge Base article:

Summary

Terminal Server Licensing failed due to a cryptography error. These messages can occur when the crypto.dll driver installation fails or becomes corrupt, or when certificates in Terminal Server become corrupt.

This rule covers the following event IDs: 10, 11, 12, 13, 26, 38

Other Information:

The event IDs described in this topic apply to Windows® 2000 Server and Windows Server™ 2000 operating systems.

Causes

Possible causes include:

Event 10: Terminal Server Licensing cannot set issuer of certificate. Crypto.dll installation fails or is corrupt.

Event 11: Terminal Server Licensing cannot set subject of certificate. Crypto.dll installation fails or is corrupt.

Event 12: Terminal Server Licensing cannot encrypt client’s hardware ID. LSEncryptBase64EncodeHWID fails.

Event 13: Terminal Server Licensing cannot sign or encode a certificate. Crypto.dll installation fails or is corrupt.

Event 26: All available licenses of type X for product X on server X have been removed. Use Terminal Server Licensing administrative tool to re-register licenses.

Event 38: Terminal Server License cannot generate a license for client.

Resolutions

Possible resolutions include:

Events 10, 11, 12, 13, 38:

(Microsoft® Windows Server™ 2000 operating systems only) Verify that crypt32.dll has installed correctly. Check Event Viewer for crypt32.dll related errors. If errors are found, reinstall Terminal Server License and contact the Microsoft Clearinghouse to reissue license packs. Access the Microsoft Clearinghouse by using the Terminal Server Licensing administrative tool.

Delete the MSLicensing key on the client computer:

Log on to the client computer.

Open Registry Editor.

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

Locate and then click the following registry subkey:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing

Back up the registry file before editing it using the Export command. If you are running a Windows 2000 Server operating system, click Export on the Registry Editor File menu. Or, if you are running a Windows 2000 Server operating system, click Export Registry File on the Registry menu.

In the File name box, type mslicensingbackup, and then click Save.

To restore this registry key in the future, double-click the Mslicensingbackup.reg file that you saved in this step.

On the Edit menu, click Delete, and then click Yes to confirm the deletion of the MSLicensing registry subkey.

Close Registry Editor, and then restart the computer.

The Microsoft® Windows® operating system rebuilds the missing registry key when you restart your computer.

Delete X509 certificate registry keys on the terminal server:

Open Registry Editor.

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

Locate and then click the following registry subkey:

HKLM\SYSTEM\CurrentControlSet\Services\TermServices\Parameters

Back up the registry file before editing it using the Export command. If you are running a Windows 2000 Server operating system, click Export on the Registry Editor File menu. Or, if you are running a Windows 2000 Server operating system, click Export Registry File on the Registry menu.

Type exported-parameters in the File name box, and then click Save.

If you have to restore this registry subkey in the future, double-click the Exported-parameters.reg file that you saved in this step.

Under the Parameters registry subkey, right-click each of the following values, click Delete, and then click Yes to confirm the deletion:

Certificate

X509 Certificate

X509 Certificate ID

Close Registry Editor, and then restart the server.

Reactivate Terminal Server License by using the Telephone connection method in the Licensing Wizard.

Restart the server.

If you activate Terminal Server Licensing by using the Telephone option, Terminal Server Licensing uses a different form of certificate.

Event 26: Upgrade operating system from the beta version to a released product.

Element properties:

TargetMicrosoft.Windows.Server.2000.TerminalServicesLicensingServerRole
CategoryEventCollection
EnabledTrue
Event SourceTermServLicensing
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Licensing Server failed due to cryptography error
{0}
Event LogSystem
CommentMom2005ID='{E7B98737-8736-4395-B6C8-80F96FE57150}'

Member Modules:

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

Source Code:

<Rule ID="LS_failed_due_to_cryptography_error_2000" Target="Microsoft.Windows.Server.2000.TerminalServicesLicensingServerRole" Enabled="onEssentialMonitoring" Remotable="true" Comment="Mom2005ID='{E7B98737-8736-4395-B6C8-80F96FE57150}'">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="Event_Data_Source" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>System</LogName>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery>EventNumber</XPathQuery>
</ValueExpression>
<Operator>MatchesMOM2005RegularExpression</Operator>
<Pattern>^(-1072627702|-1072627701|-1072627700|-1072627699|26|38)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>TermServLicensing</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertOwner>$Data/PublisherName$</AlertOwner>
<AlertMessageId>$MPElement[Name="LS_failed_due_to_cryptography_error_2000.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>