EventProcessorHost抛出FIPS加密算法异常

时间:2018-12-04 21:25:29

标签: c# .net md5 azure-eventhub fips

试图在Windows服务中实例化Microsoft.Azure.EventHubs EventProcessorHost导致发生以下异常:

Service cannot be started.
Microsoft.Azure.EventHubs.Processor.EventProcessorRuntimeException: 
Out of retries creating lease for partition --->
...
System.InvalidOperationException: 
This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.

正在运行的服务器将FipsAlgorithmPolicy密钥设置为Enabled(1),这是由组策略强制执行的,因此不能设置为Disabled(0)。

1 个答案:

答案 0 :(得分:2)

EventProcessorHost在内部创建CloudStorageAccount类的实例。静态属性“ UseV1MD5”的默认值为 true 。因此,任何实例化的CloudStorageAccount对象的默认行为是使用有缺陷的MD5哈希算法,该算法不符合FIPS / FISMA。

解决方案是在实例化EventProcessorHost之前将静态属性设置为false,以确保基础CloudStorageAccount使用与FIPS / FISMA兼容的MD5哈希算法版本。

CloudStorageAccount.UseV1MD5 = false;
_eventProcessorHost = new EventProcessorHost("<event-hub-path>", 
    "<consumer-group-name>", 
    "<event-hub-connection-string>", 
    "<storage-connection-string>", 
    "<lease-container-name>");

在撰写本文时,我无法通过Google,StackOverflow等找到此解决方案,而是通过分析这些类的内部结构并进行实验来找到它的。

HTH