EventProcessorHost 抛出 FIPS 加密算法异常
EventProcessorHost throwing FIPS cryptographic algorithm exception
尝试在 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 键设置为启用 (1),这是由组策略强制执行的,因此不能设置为禁用 (0)。
EventProcessorHost 在内部创建 CloudStorageAccount class 的一个实例。静态属性、"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、Whosebug 等找到此解决方案,而是通过分析这些 classes 的内部结构并进行试验找到了解决方案。
HTH
尝试在 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 键设置为启用 (1),这是由组策略强制执行的,因此不能设置为禁用 (0)。
EventProcessorHost 在内部创建 CloudStorageAccount class 的一个实例。静态属性、"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、Whosebug 等找到此解决方案,而是通过分析这些 classes 的内部结构并进行试验找到了解决方案。
HTH