我有以下场景:
- 具有自托管 OWIN WebApi 的无状态服务。这提供了一个面向客户端的 RESTful API。
- 有状态服务,同样使用自托管的 OWIN WebApi。
- 找到正确的有状态服务分区后,无状态服务调用有状态服务来访问状态。它通过进入 WebApi 的 HTTP/HTTPS 实现。
此配置通过 HTTP 在本地集群和 Azure 集群上运行良好。我在使用 HTTPS 时遇到了问题。
使用自签名证书,我可以在客户端和无状态前端服务之间使用 HTTPS。但是,我似乎无法正确配置以允许无状态服务通过 HTTPS 与有状态服务进行通信。
当无状态服务向有状态服务发出请求时,我得到一个异常。 “底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。”这有一个内部异常“远程证书根据验证程序无效”。
我对服务结构的安全性有点模糊,但已经阅读了几篇关于这个主题的文章、SO 帖子、博客等。
这是我的问题:
- 在高层次上,在我的场景中保护服务间通信的正确方法是什么?
- 这种情况下是否支持自签名证书?
最佳答案
这两个服务是否在同一个集群中?如果是这样,为什么不使用 ServiceProxy 从无状态服务调用有状态服务呢?
您可以使用自签名证书 - 您看到的错误并非特定于 Service Fabric。有几种方法可以绕过它(尽管显然不建议在生产中这样做)。看看这个 SO 问题:C# Ignore certificate errors?
关于ssl - Azure Service Fabric 服务之间的 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37552527/