【发布时间】:2020-03-22 10:15:43
【问题描述】:
简介
如今,为不同的内部微服务之间的通信设置 SSL 很常见。 为了设置它,需要各种步骤。
我的具体示例是我试图为 Kafka 集群设置安全通信,以便代理通过 SSL 进行通信,并且客户端在与 kafka 代理通信时也使用 SSL。
奋斗
通常,我会按照一些教程步骤来获取本地工作示例。但是当它不起作用时,很难排除故障。您不知道您在生成根证书或创建密钥库和信任库时是否出错,或者您的配置有问题。
最好在尝试了解您在做什么之前阅读尽可能多的文档。而不仅仅是盲目地遵循一些教程步骤。
问题是一次学习一堆东西可能会让人不知所措。因为您需要使用各种东西:openssl、keytool、Kafka (或其他任何东西)
我尝试搜索是否有任何现有工具,或者是否可以直接使用keytool 为其提供密钥库、信任库和主机名,如果您的这些文件“兼容”,则结果将为是/否。
我知道有可能使用
openssl s_client -connect my-host:my-port
但为了使用它,您首先需要使用您的密钥库启动 Web 服务器。
问题
如何确保在您需要做的所有配置中,您生成的keystore.jks 和trustore.jks 将适用于您的某些主机名?
因此,您可以将它们排除为有问题的,并专注于可能导致您的系统无法正常工作的其他事情。
更新
一些 cmets 建议使用其他方法:
- 使用
openssl以s_server开头并以s_client开头- 优点:可能更可靠、更好的调试输出
-
缺点:如果您只有
.jks文件,则需要使用keytool将它们转换为.p12
- 使用
Keystore explorer或keytool -v -list ...检查内容- 这是手动工作,尚不清楚需要匹配哪些值才能保证在(
server拥有keystore.jks)和(client拥有truststore.jks)之间实际进行通信
- 这是手动工作,尚不清楚需要匹配哪些值才能保证在(
【问题讨论】:
-
openssl也可用于启动服务器(通过s_serveropenssl.org/docs/man1.1.1/man1/s_server.html),该服务器将为您的证书提供服务。结合其调试功能,它是完成这项工作的最佳工具。 -
那么,接下来需要做什么来进行验证:1) 将
keystore.jks转换为keystore.p12; 2) 将truststore.jks转换为truststore.p12; 3) 以s_server开始openssl给定keystore.p12; 4) 以s_client给定truststore.p12开始openssl以连接在3) 开始的服务器上? -
如果您没有使用
openssl来生成您的证书,并将它们以 Java 格式 (.jks) 保存,那么可以。
标签: ssl apache-kafka openssl keytool