关键工具错误: java.io.FileNotFoundException: node0.cer (没有这个文件或目录)

4
我希望为Cassandra开发准备服务器证书以进行客户端到节点的加密,但在运行命令时遇到以下问题:
我正在按照这些链接设置:

https://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/secureSSLClientToNode.html https://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/secureSSLCertificates.html

当我运行以下命令时:
keytool -export -alias cassandra -file node0.cer -keystore cassandra.keystore

我收到了这个错误:

keytool error: java.lang.Exception: Keystore file does not exist: cassandra.keystore

当运行以下命令时:

keytool -import -v -trustcacerts -alias node0 -file node0.cer -keystore truststore.node0

得到这个错误:
keytool error: java.io.FileNotFoundException: node0.cer (No such file or directory) java.io.FileNotFoundException: node0.cer (No such file or directory)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at sun.security.tools.keytool.Main.doCommands(Main.java:1037)
        at sun.security.tools.keytool.Main.run(Main.java:368)
        at sun.security.tools.keytool.Main.main(Main.java:361)

我的操作系统是RS-Centos-7。

有人能帮忙吗?

1个回答

2
我假设您是在生成密钥后,尝试将证书的公共部分导出到单独的文件中。
因此,对于第一个命令:
keytool -export -alias cassandra -file node0.cer -keystore cassandra.keystore

-keystore参数将获取使用命令创建的密钥库。

keytool -genkey -keyalg RSA -alias node0 -validity 36500 -keystore keystore.node0

需要翻译的内容:

这是 keystore.node0 文件。

第二个错误是正常的,因为您在之前的步骤中没有生成 node0.cer 文件。

进一步解释:

第一步是生成密钥并将其保存到密钥库中。可以使用以下方法完成此操作:

keytool -genkey -keyalg RSA -alias node0 -validity 36500 -keystore keystore.node0

这个命令会生成一个私钥/公钥对,并将其保存在别名为node0的密钥库keystore.node0中。

第二个命令是 keytool -export -alias cassandra -file node0.cer -keystore cassandra.keystore

应该导出证书,但其中有一些错误的参数。正确的命令(与上面的命令相关)为:

keytool -export -alias node0 -file node0.cer -keystore keystore.node0

完成此步骤后,您应该有一个node0.cer文件,可以进一步使用。

基本上,为了在Cassandra节点之间启用SSL,您需要执行以下操作:

  • 创建一个密钥库,其中包含每个节点的私钥 - 公钥对
  • 创建一个信任库,其中包含集群中每个节点的证书
  • 更改每个节点上的cassandra.yaml文件,以指定该节点的密钥库和信任库。
  • 重新启动cassandra。

为简单起见,您可以拥有相同的信任库,其中包含集群中所有节点的证书。


你的回答是什么意思?能否请您再检查一下?我正在运行命令:"keytool -export -alias cassandra -file node0.cer -keystore cassandra.keystore",但是出现了错误。 - Govind Gupta
三年过去了,他们仍然没有修复他们的文档。非常感谢。 - Jake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接