如果我在某个地方出错,请纠正我,因为我是加密领域的新手。
我正在使用以下命令在 Java 7 中生成 EC 密钥对:
根据:docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html#Commands
keytool -genkeypair -alias MyServerPair -keyalg EC -keysize 571 -sigalg SHA512withECDSA -keypass 123456 -validity 365 -storetype JKS -keystore MyServerStore -storepass 123456
执行后,
密钥库在目录中生成。之后,我尝试使用以下命令导出证书:
keytool -exportcert -alias MyServerPair -file MyServer.crt -storetype JKS -keystore MyServerStore -storepass 123456
之后生成 MyServer.crt。
但是当我打开 MyServer.crt 文件并检查证书状态时,我发现“此证书的数字签名无效”
此外,在证书详细信息中,当我看到公钥值时,它显示 ECC(0 位)。
为什么呢 ?我哪里错了?我的猜测是我使用了错误的签名算法。
我指的是docs.oracle.com/javase/7/docs/technotes/gui4des/security/SunProviders.html#SunEC
一些截图在这里
编辑:
当我使用像 571 这样的二进制字段值作为 -keysize 但如果我使用与像 521 这样的二进制字段值相对应的素数字段值时,它会发生这种情况,它可以正常工作而没有上述问题。
编辑2:
即使使用其他 -sigalg 值和密钥大小 571 和其他二进制值问题也存在。
我猜素数字段值只能被使用。