You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AEM 6.0环境解密时出现CryptoException异常求助

解决AEM 6.0单环境解密CryptoException异常的方案

我之前维护AEM 6.0实例时,也碰到过一模一样的单环境解密抛出CryptoException的问题,试过你说的删除/etc/key、重启Bundle和服务器都没用,后来通过下面几个方向排查解决了,给你参考:

1. 优先检查密钥同步一致性

单个环境出问题,90%以上是密钥不匹配导致的:

  • 确认出问题的发布服务器和正常环境(比如作者服务器或其他正常发布节点)的/etc/key文件夹内容完全一致,包括所有子文件和权限。很多时候手动复制密钥会漏文件,或者权限设置错误(AEM运行用户没有读写权限)。
  • 正确的权限设置命令(以Linux为例):
    chown -R aem-run-user:aem-run-group /crx-quickstart/repository/etc/key
    chmod -R 750 /crx-quickstart/repository/etc/key
    
  • 替换密钥后,一定要彻底重启AEM实例,不要只重启Bundle。

2. 验证OSGi Crypto配置正确性

有时候Bundle重启了,但配置项存在差异:

  • 访问AEM的OSGi控制台/system/console/configMgr,找到Adobe Granite Crypto Support配置项。
  • 对比正常环境的配置,重点检查:
    • 是否指定了非默认的密钥存储路径
    • 密钥别名(Key Alias)是否一致
    • 是否开启了自定义密钥提供者
  • 如果有差异,调整为和正常环境一致的配置,然后保存并重启Crypto Bundle。

3. 排查加密文本的来源问题

如果这个环境的加密文本是从其他环境迁移过来的,可能存在加密密钥不兼容:

  • 尝试在正常环境重新加密目标文本,然后替换到出问题的环境中测试解密是否正常。
  • 确认加密时使用的是AEM标准的Crypto API(com.adobe.granite.crypto.Crypto),而非自定义加密逻辑。

4. 查看完整异常栈定位根因

你提供的错误信息不完整,完整的异常栈会给出更精准的原因:

  • 到AEM的error.log中搜索com.adobe.granite.crypto.CryptoException,找到完整的异常信息,比如:

    Caused by: com.adobe.granite.crypto.CryptoException: Invalid key format
    Caused by: com.adobe.granite.crypto.CryptoException: Key not found in keystore

  • 根据具体的错误描述,比如“密钥格式无效”就检查密钥文件是否损坏,“密钥未找到”就检查密钥别名是否匹配。

5. 清理Crypto Bundle缓存

有时候Bundle的缓存会导致密钥加载异常:

  • 到OSGi控制台的Bundle管理页面(/system/console/bundles),找到Adobe Granite Crypto Support Bundle,记录它的ID。
  • 停止Bundle,然后删除对应的缓存文件(路径示例:/crx-quickstart/launchpad/felix/bundle[ID]/data)。
  • 重新启动Bundle,再重启AEM实例。

注意事项

操作前一定要备份/etc/key文件夹和AEM实例,避免因操作失误导致数据丢失。

内容的提问来源于stack exchange,提问作者ezhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:23:01