如何验证导入到keystore.jks的自签名证书是否与truststore.jks兼容?

问题描述 投票:0回答:1

简介

如今,设置SSL以在不同内部微服务之间进行通信是很常见的。为了进行设置,需要执行各种步骤。

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

奋斗

通常,我将遵循一些教程步骤,只是为了在本地获得可用的示例。但是,当它不起作用时,很难进行故障排除。您不知道在生成根证书或创建密钥库和信任库时是否犯了错误,或者您的配置有问题。

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

我尝试搜索是否有任何现有工具,或者是否可以直接使用keytool为其提供密钥库,信任库和主机名,如果这些文件“兼容”,则结果为是/否。

我知道可以使用openssl s_client -connect my-host:my-port但是,要使用它,您首先需要使用密钥库启动Web服务器。

问题

如何确保您需要做的所有配置中,您生成的keystore.jkstrustore.jks对于某些hostname来说可以正常工作?因此,您可以将它们排除在有问题的位置上,然后专注于可能导致系统无法正常工作的其他事情。

ssl apache-kafka openssl keytool
1个回答
0
投票

我创建了一个简单的小程序,以针对trustore.jks验证keystore.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

NOTES

  • 对于-h,您需要指定创建密钥库时使用的主机(通用名称CN)(例如,CN = localhost)
  • 您需要在此主机上运行它,因为客户端将尝试连接到它,或者是在其他地方运行它,但是您可以在127.0.0.1 my.example.host.com中添加/etc/hosts以将DNS解析定向到该同一台计算机上]]
© www.soinside.com 2019 - 2024. All rights reserved.