Keytool EC KeyPairGenerator不可用

当我使用keytool生成ECC密钥时,我收到此错误

错误keytool:java.security.NoSuchAlgorithmException:EC KeyPairGenerator不可用

然后用于生成密钥的语法是:

keytool -genkey -alias testing -keyalg EC -keysize 256 -keystore try.jks -dname "CN=localhost,OU=dep,O=lks,L=ny,ST=ny,C=USA" 

我有这个Java版本:

 openjdk version "1.8.0_60" OpenJDK Runtime Environment (build 1.8.0_60-b16) OpenJDK 64-Bit Server VM (build 25.60-b16, mixed mode) 

此错误表示您的EC安全提供程序丢失,请执行以下操作添加它:

  • 编辑文件“jdk1.8.0_65 \ lib \ security \ java.security”
  • 搜索“提供商列表及其优先顺序”
  • 将“security.provider。[Last security provider id +1] = sun.security.ec.SunEC”添加到安全提供程序列表中。

有关sunEC安全提供程序的更多详细信息,请参阅此链接 。

我在Ubuntu 16.04上与pepk (Play Encrypt Private Key)有同样的错误。

我用一个接近CipherX答案的解决方案解决了这个问题:

  1. 下载Java Oracle (tar.gz)
  2. 提取文件
  3. 而不是启动系统上安装的java从提取的文件中启动java
 ~/Downloads/android/jdk-9.0.1/bin/java -jar pepk.jar --keystore=acme.keystore \ --alias=acme --output=encrypted_private_key_path --encryptionkey=eb… 

Error: EC KeyPairGenerator not available错误消失。

我解决了阅读本文的问题(由用户@QuakeCore链接)。 如果有人遇到此问题,您可以按照我的步骤解决:

  1. 下载Java Oracle (tar.gz);
  2. jdk1.8.0_*/jre/lib/amd64/libsunec.so压缩文件夹中的文件jdk1.8.0_*/jre/lib/amd64/libsunec.so复制到/usr/lib/jvm/java-1.8.0-openjdk.x86_64/jre/lib/amd64/libsunec.so ;
  3. 使用我原始问题中编写的语法生成密钥。