如何将 .cer public 密钥导入 java 信任库?

How to import .cer public key into java trust store?

这是我用来将 public 密钥导入我的信任库的命令。

$ keytool -import -trustcacerts -file dev.cer -alias my_alias -keystore truststore.jks -storepass mypass -v

我得到的输出是:

keytool error: java.lang.Exception: Input not an X.509 certificate
java.lang.Exception: Input not an X.509 certificate
        at sun.security.tools.keytool.Main.addTrustedCert(Main.java:2652)
        at sun.security.tools.keytool.Main.doCommands(Main.java:1006)
        at sun.security.tools.keytool.Main.run(Main.java:340)
        at sun.security.tools.keytool.Main.main(Main.java:333)

dev.cer 文件的内容如下所示:

-----BEGIN PUBLIC KEY-----
... encoded text ...
-----END PUBLIC KEY-----

还有一点值得一提,这个证书是在 Windows 运行 机器上生成的,我想在 Linux 环境中导入它。可能和特殊字符有关。

任何帮助将不胜感激。

keytool error: java.lang.Exception: Input not an X.509 certificate 的原因是因为没有导入证书,而是尝试导入 public 密钥(即使文件扩展名是 .cer ,页眉 -----BEGIN PUBLIC KEY----- 和页脚 -----END PUBLIC KEY----- 表示该文件不包含有效证书,但仅包含 public 密钥)。术语 public 证书和 public 密钥有时会被错误地互换使用。