Jef*_*etz 5 encryption ssl akka
关于Akka,SSL和证书管理的stackoverflow有几个问题,以实现Akka actor之间的安全(加密)对等通信.
关于远程处理的Akka文档(http://doc.akka.io/docs/akka/current/scala/remoting.html)将读者指向此资源,作为如何生成X.509证书的示例.
http://typesafehub.github.io/ssl-config/CertificateGeneration.html#generating-a-server-ca
由于actor在内部服务器上运行,因此example.com(或实际上任何DNS名称)的服务器CA的生成似乎是不相关的.大多数服务器(例如在Amazon Web Services上运行的EC2实例)将在VPC中运行,而初始Akka遥控器将是私有IP地址,如
remote = "akka.tcp://sampleActorSystem@172.16.0.10:2553"
我的理解是,应该可以创建自签名证书并生成所有对等共享的信任存储.
随着更多的Akka节点上线,他们应该(我假设)能够使用相同的自签名证书和所有其他同行使用的信任存储.我还假设,即使您没有CA,也不需要信任所有具有不断增长的证书列表的对等体,因为信任存储将验证该证书,并避免人员处于中间攻击.
理想的解决方案和希望是,可以生成单个自签名证书,无需CA步骤,单个信任存储文件,并在Akka遥控器的任意组合之间共享/(客户端调用远程和远程) ,即所有同行)
必须有一个简单的过程来为简单的内部加密和客户端身份验证生成证书(只需信任所有对等体)
问题:这些文件在每个对等体上都可以是相同的文件,这将确保它们与可信客户端通信并启用加密吗?
key-store = "/example/path/to/mykeystore.jks"
trust-store = "/example/path/to/mytruststore.jks"
Run Code Online (Sandbox Code Playgroud)
问题:上面链接的X.509指令是否过度 - 有没有CA步骤的简单自签名/信任存储方法?特别是对于内部IP地址(没有DNS),并且证书中没有不断增加的IP地址网络,因为服务器可以自动升级和降级.
首先,我必须承认我不了解Akka,但我可以为您提供SSL协议中X509证书识别的指南。
akka 服务器配置需要绑定到主机名的 SSL 证书
您将需要一个分配了 DNS 主机名的服务器,以进行主机名验证。在此示例中,我们假设主机名是 example.com。
SSL 证书可以绑定到 DNS 名称或 IP(不常见)。为了客户端验证正确,必须对应服务器的IP/主机名
AKKA 要求每个服务器都有一个由通用 CA 颁发的证书
CA
- server1: server1.yourdomain.com (or IP1)
- server2: server2.yourdomain.com (or IP2)
Run Code Online (Sandbox Code Playgroud)
为了简化服务器部署,可以使用通配符*.yourdomain.com
CA
- server1: *.yourdomain.com
- server2: *.yourdomain.com
Run Code Online (Sandbox Code Playgroud)
在客户端,您需要配置一个信任库,包括 JKS 中 CA 证书的公钥。客户端将信任该 CA 颁发的任何证书。
在您描述的架构中,我认为您不需要密钥库。当您还想使用证书来识别客户端时,就需要它。这两种情况都会建立 SSL 加密通道。
如果你没有类似的域名yourdomain.com并且想使用内部IP,我建议为每台服务器颁发一个证书并将其与IP地址绑定。
根据 akka 验证服务器证书的方式,可以为所有服务器使用唯一的自签名证书。Akka 可能依赖于 JVM 默认值的信任配置。如果您在信任库(而不是 CA)中包含自签名证书,则 ssl 套接字工厂将信任提供此证书的连接,即使该证书已过期或服务器的主机名与证书不匹配。我不推荐它
| 归档时间: |
|
| 查看次数: |
567 次 |
| 最近记录: |