Apereo CAS登录报java.security.InvalidAlgorithmParameterException错误求助
解决CAS登录时500错误(AlgorithmParameterSpec not of GCMParameterSpec)
问题分析
该错误是因为CAS的加密转码器处理请求时,预期接收GCMParameterSpec类型的算法参数,但实际传入了不匹配的参数类型。结合你的环境(Java 17 + CAS 7.0.0-SNAPSHOT),核心原因是默认加密配置与JDK 17的适配性问题,或密钥库生成不符合GCM算法要求。
解决方案
1. 调整CAS加密配置
在CAS配置文件(src/main/resources/application.properties或application.yml)中明确指定加密算法参数:
- 若使用properties格式:
cas.webflow.executor.encoding.alg=AES/GCM/NoPadding cas.webflow.executor.encoding.spec=GCMParameterSpec cas.webflow.executor.encoding.key-size=256
- 若使用YAML格式:
cas: webflow: executor: encoding: alg: AES/GCM/NoPadding spec: GCMParameterSpec key-size: 256
2. 重新生成适配GCM的密钥库
默认createKeystore任务生成的密钥可能不兼容GCM算法,手动生成符合要求的密钥库:
keytool -genkeypair -alias cas -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore thekeystore -validity 3650
生成时按提示输入密钥库密码、密钥密码等信息,之后替换CAS默认密钥库文件,并在配置文件中更新路径:
cas.server.ssl.key-store=file:/path/to/your/thekeystore cas.server.ssl.key-store-password=你的密钥库密码 cas.server.ssl.key-password=你的密钥密码
3. 确认JDK无限制加密策略
检查$JAVA_HOME/jre/lib/security/java.security文件,确保存在以下配置:
crypto.policy=unlimited
若缺失则添加该行,保存后重启CAS。
4. 重新构建启动CAS
执行命令重新部署:
./gradlew clean build ./gradlew run
验证
重新访问CAS登录页面尝试登录,确认500错误是否消除。
内容的提问来源于stack exchange,提问作者Michael Shi
相关产品推荐
相关产品推荐

