【问题标题】:java.security.NoSuchAlgorithmException: AES KeyGenerator not available while deploy on jbossjava.security.NoSuchAlgorithmException:在 jboss 上部署时 AES KeyGenerator 不可用
【发布时间】:2017-05-08 19:07:23
【问题描述】:

我有一个问题,我需要你的帮助。在 jboss 上部署项目时出现此错误:

Unexpected exception initializing encryption.  No encryption will be performed.: javax.faces.FacesException: java.security.NoSuchAlgorithmException: AES KeyGenerator not available
    at com.sun.faces.renderkit.ByteArrayGuard.setupKeyAndMac(ByteArrayGuard.java:232)
    at com.sun.faces.renderkit.ByteArrayGuard.<init>(ByteArrayGuard.java:89)
    at com.sun.faces.renderkit.ClientSideStateHelper.init(ClientSideStateHelper.java:496)
    at com.sun.faces.renderkit.ClientSideStateHelper.<init>
Caused by: java.security.NoSuchAlgorithmException: AES KeyGenerator not available
    at javax.crypto.KeyGenerator.<init>(KeyGenerator.java:169)
    at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:223)
    at com.sun.faces.renderkit.ByteArrayGuard.setupKeyAndMac(ByteArrayGuard.java:226)
    ... 29 more

【问题讨论】:

  • 它运行在什么版本/风格的 Java 上?
  • 哪个代码会抛出错误?
  • 我使用的是 jdk 1.8.0_112。我刚刚启动 Jboss 以在 Jboss IDE 上部署我的项目。

标签: java jsf jboss


【解决方案1】:

Java 的每个实现都需要支持一些标准算法,例如 AES 或 DES。这在documentation of KeyGenerator 中有说明。所以你的 Java 环境设置可能有问题。

在 oracle 的 java 实现中,算法类应该位于sunjce_provider.jar(至少对于 1.7 和 1.8 版本),通常位于 $JAVA_HOME/jre/lib/ext 下。

一个常见的错误是,此目录不在您的类路径中,当您通过显式定义扩展目录时,可能会发生这种情况

java -Djava.ext.dirs=/my/other/dir <more arguments...>

如果您以这种方式指定扩展目录,您还应该包含$JAVA_HOME/jre/lib/ext(并确保JAVA_HOME 设置正确):

java -Djava.ext.dirs=/my/other/dir:$JAVA_HOME/jre/lib/ext  <more arguments...>

在 JBoss/Wildfy 中,这通常在配置文件 bin/standalone.conf(或旧版本中的 bin/run.conf)中完成。 关于java扩展及其配置的详细信息可以在here找到。

【讨论】:

  • 我个人从未见过 lib/ext 不在类路径中,但我看到默认情况下 AES 没有激活
猜你喜欢
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多