ssl - 如何验证导入到 keystore.jks 的自签名证书是否适用于 truststore.jks?

标签 ssl apache-kafka openssl keytool

介绍

现在,为不同的内部微服务之间的通信设置 SSL 很常见。
为了设置它,需要各种步骤。

我的具体示例是我试图为 Kafka 集群设置安全通信,以便代理通过 SSL 进行通信,并且客户端在与 kafka 代理通信时也使用 SSL。

斗争

通常,我会按照一些教程步骤来获取本地工作示例。但是当它不起作用时,很难排除故障。您不知道在生成根证书或创建 keystore 和信任库时是否犯了错误,或者您的配置可能有问题。

好事是在尝试了解您在做什么之前阅读尽可能多的文档。而不仅仅是盲目地遵循一些教程步骤。
问题是一次学习一堆东西可能会让人不知所措。因为需要用到各种东西:openssl , keytool , Kafka (或其他)

我试图搜索是否有任何现有工具或 keytool可以直接用于给它 keystore 、信任库和主机名,如果您的这些文件是“兼容的”,结果将是“是/否”。

我知道有可能使用openssl s_client -connect my-host:my-port但为了使用它,您首先需要使用您的 keystore 启动 Web 服务器。

问题

如何确保在您需要做的所有配置中,keystore.jkstrustore.jks您生成的某些主机名可以正常工作吗?
因此,您可以将它们排除为有问题的,并专注于可能导致您的系统无法工作的其他事情。

更新

一些评论提出了其他方法:

  • 使用 openssls_server 开始并以 s_client 开头
  • 专业人士 : 可能更可靠、更好的调试输出
  • 缺点 : 如果你只有 .jks您需要使用的文件keytool将它们转换为 .p12
  • 使用 Keystore explorerkeytool -v -list ...检查内容
  • 这是手动工作,尚不清楚需要匹配哪些值才能保证在( server 具有 keystore.jks )和( client 具有 truststore.jks )
  • 之间实际工作

    最佳答案

    我创建了简单的小程序来验证 keystore.jks 与 trustore.jks。
    这是一个简单的 java 程序,它将打开 ssl 套接字,然后运行客户端以尝试连接到该套接字并交换一些数据。

    这里是 gist我已经创建来分享它。

    你可以简单地编译它:

    javac KeyTest.java
    

    运行它:
    java KeyTest \
       -k path-to-keystore.jks -kp keystore-password \
       -t path-to-truststore.jks -tp truststore-password \
       -h localhost -p 443
    

    备注 :
  • 对于 -h您需要指定创建 keystore 时使用的主机(通用名称 CN)(例如 CN=localhost)
  • 您需要在此主机上运行它,因为客户端会尝试连接到它,替代方法是在其他地方运行它,然后您可以添加 127.0.0.1 my.example.host.com进入 /etc/hosts将 DNS 解析定向到同一台机器
  • 关于ssl - 如何验证导入到 keystore.jks 的自签名证书是否适用于 truststore.jks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60798084/

    相关文章:

    ios - 如何使用 Quartz 以 mmap() 方式对加密的 (AES-256) PDF 文件进行 "load"?

    iis-7 - 如何在Windows 2008/IIS7 上安装多个SSL?

    ruby - 指定 TLSv1 时 SSLv3 证书验证失败?

    angular - 如何将 SSL 与子文件夹中的 asp-net-core 应用程序一起使用

    node.js - 无法让我的 Node 应用程序使用单独的 docker compose 文件连接到 kafka

    java - 通过 TLS/SSL 的 log4j2 kafka appender

    apache-kafka - 消费者如何读取提交的消息?

    node.js - 在谷歌云中从http重定向到https

    Perl JSON::RPC::Client Not a HASH reference 错误

    php - 如何修复 Curl SSL CA 证书错误