java - keytool 错误:java.io.FileNotFoundException:node0.cer(没有这样的文件或目录)
问题描述
我想为 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。
有人可以帮忙吗?
解决方案
我假设您在生成密钥后尝试将证书的公共部分导出到单独的文件中。
所以对于第一个命令
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 文件,以指定该节点的密钥库和信任库。
- 重新启动卡桑德拉。
为简单起见,您可以拥有相同的信任库,其中包含集群中所有节点的所有证书。
推荐阅读
- javascript - 由于箭头功能,简单的 Javascript 代码在 Google 文档中不起作用
- python - 按顺序提取用括号括起来的字符串的唯一部分
- python - 单击 Web 元素列表中的特定元素只有一半的时间
- javascript - 用 Promise、Generators 和 Async/Await 理解异步控制流
- php - 如何在服务器上查找 Wordpress 插件的数据库位置?
- excel - Excel中查找父子关系的公式
- postgresql - Microfocus cobol 无法使用 DSN 连接到 postgres
- javascript - FCkeditor 图片上传允许在 asp.net 上扩展
- ibm-watson - Watson Assistant 不断重置对话
- javascript - 在 React/Redux 中,如何计算购物车的总价