【问题标题】:keytool error: java.io.FileNotFoundException: node0.cer (No such file or directory)keytool 错误:java.io.FileNotFoundException:node0.cer(没有这样的文件或目录)
【发布时间】:2026-02-18 23:45:02
【问题描述】:

我想在 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。

有人可以帮忙吗?

【问题讨论】:

    标签: java cassandra centos7 cassandra-3.0


    【解决方案1】:

    我假设您在生成密钥后尝试将证书的公共部分导出到单独的文件中。

    所以对于第一个命令

    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 并得到错误。
    • 3 年过去了,他们仍然没有修复他们的文档。谢谢一百万
    最近更新 更多