我在这里发布了一个关于设置EnableSslCertificateVerification设置的问题 yo true 它如何在 Windows 上不起作用。SSL 握手失败。
我发现这可以通过添加SslCaLocation设置来解决,如下所示:
"Dev-on-Windows": {
"commandName": "Project",
"environmentVariables": {
"Kafka__BootstrapServers": "myloadbalancer.myhost.corp:9094",
"Kafka__EnableSslCertificateVerification": "true",
"Kafka__SchemaRegistryUrl": "myschemareg.myhost.corp:8081,myschemreg2.myhost.corp:8081",
"Kafka__SecurityProtocol": "SaslSsl",
"Kafka__SslCaLocation": "cacert.pem",
"Kafka__SaslMechanism": "Gssapi",
"Kafka__ClientId": "DotNetCoreReferenceApplication",
"Kafka__ErrorTolerance": "Moderate",
"Kafka__Debug" : "all",
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
},
其中 cacert.pem 文件只是证书签名 PK 的串联。这样可行。我不确定为什么在理想情况下它应该能够检查 Windows 上受信任的根存储时需要这样做。
更新
需要两个证书。其中一个在受信任的根证书颁发机构中,另一个在中间证书颁发机构中。
我删除了SslCaLocation配置,只是将第二个证书从中间存储区导入到根存储区,它就可以工作了。
Kafka 的 Confluent Client Lib / Windows 的 librdkafka 是否不查看中间证书存储?