从PEM / DER导入的密钥工具给出异常:答复中的公共密钥和密钥库不匹配

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

我正在用Java与TCP中的客户端进行通信的TCP服务器。

到目前为止,我的方法:

# Generate server's private and public keys
keytool -genkey -alias server -keyalg RSA -keysize 2048 -validity 365 -keystore certs.jks -storepass le_pass
# Export for client
keytool -exportcert -alias server -keystore certs.jks -storepass le_pass -rfc -file server.pem
# Generate client's private and public keys
openssl req -new -x509 -days 365 -nodes -sha256 -out client.pem -keyout client.key
# Convert and import client's public key
openssl x509 -outform der -in client.pem -out client.der
keytool -import -alias server -keystore certs.jks -file client.der -storepass le_pass

结果(如果未转换,则相同):

keytool error: java.lang.Exception: Public keys in reply and keystore don't match

如果我在最后一行中使用其他别名,则不会出现任何错误,但我不认为应该这样做吗?

ssl openssl keytool
1个回答
0
投票

第一个命令keytool -genkey -alias server ...为别名server创建私钥和公钥。难怪它在最后一个命令keytool -import -alias server ...中失败-您尝试为已存在的名称加载different公钥。与别名server的现有私钥不匹配的公钥。

我认为您不需要将客户端的公共密钥保存在server别名下。恕我直言,它应该命名为client,不是吗?

keytool -import -alias CLIENT-keystore certs.jks -file client.der -storepass le_pass
© www.soinside.com 2019 - 2024. All rights reserved.