Windows下Tomcat部署Alfresco时密钥库验证错误排查
部署Alfresco Content Services Community 23.2.1时的密钥库错误排查与解决
问题场景
在Windows环境的Tomcat 10.1.28上部署Alfresco Content Services Community Edition(23.2.1版本),完成密钥库配置并设置alfresco-global.properties后,启动时收到以下错误:
SEVERE: Exception sending context initialized event to listener instance of class [org.alfresco.web.app.servlet.CORSContextListener] org.alfresco.error.AlfrescoRuntimeException: 08030002 Keystores are invalid ... Caused by: org.alfresco.error.AlfrescoRuntimeException: 08030000 Unable to get secret key: no key information is provided
配置详情
1. alfresco-global.properties配置
#Set this property unless you have explicitly chosen to expose some repository APIs without authentication #solr.secureComms=https # Custom content and index data location dir.root=D:/tomcat/apache-tomcat-10.1.28/alfresco/keystore dir.keystore=D:/tomcat/apache-tomcat-10.1.28/alfresco/keystore dir.contentstore=D:/tomcat/apache-tomcat-10.1.28/alfresco/contentstore dir.contentstore.deleted=D:/tomcat/apache-tomcat-10.1.28/alfresco/contentstore.deleted # Sample database connection properties db.driver=com.mysql.cj.jdbc.Driver db.url=jdbc:mysql://localhost:3306/alfresco?useSSL=false&serverTimezone=UTC db.username=alfresco_user db.password=**** # URL Generation Parameters (The ${localname} token is replaced by the local server name) alfresco.context=/alfresco alfresco.host=localhost alfresco.port=8080 alfresco.protocol=http share.context=/share share.host=localhost share.port=8080 share.protocol=http transform.service.enabled=false local.transform.service.enabled=false legacy.transform.service.enabled=false encryption.keystore.path=D:/tomcat/apache-tomcat-10.1.28/alfresco/keystore/keystore.p12 encryption.keystore.type=pkcs12 encryption.key.alias=metadata encryption.keystore.password=alfresco encryption.cipherAlgorithm=AES/CBC/PKCS5Padding encryption.keyAlgorithm=AES encryption.mac.algorithm=HmacSHA1
2. 密钥库创建命令
keytool -genkeypair -alias metadata -keyalg RSA -keysize 2048 -keystore D:/tomcat/apache-tomcat-10.1.28/alfresco/keystore/keystore.p12 -storetype pkcs12 -storepass alfresco -keypass alfresco
已执行的排查步骤
- 验证密钥库路径与权限
- 使用不同参数重新创建密钥库(及信任库)
- 检查Tomcat日志与配置
成因分析
错误核心是Unable to get secret key: no key information is provided,根源在于:
- 密钥算法不匹配:配置中指定
encryption.keyAlgorithm=AES(对称加密算法),但创建密钥库时用的是-keyalg RSA(非对称加密算法),Alfresco无法从RSA密钥对中提取AES类型的密钥。 - 密钥库用途不符:Alfresco的元数据加密要求使用对称密钥,而RSA生成的是非对称密钥对,无法满足AES加密的密钥需求。
解决方法
步骤1:重新创建符合要求的密钥库
使用AES算法生成对称密钥,替换原有密钥库:
keytool -genseckey -alias metadata -keyalg AES -keysize 256 -keystore D:/tomcat/apache-tomcat-10.1.28/alfresco/keystore/keystore.p12 -storetype pkcs12 -storepass alfresco -keypass alfresco
注意:若JDK版本低于1.8u151,需修改Java安全策略文件以支持256位AES密钥,或把
-keysize改为128。
步骤2:验证密钥库
用以下命令检查密钥库中的密钥信息,确认密钥类型为AES:
keytool -list -v -keystore D:/tomcat/apache-tomcat-10.1.28/alfresco/keystore/keystore.p12 -storetype pkcs12 -storepass alfresco
在输出中查找Entry type: SecretKeyEntry,确认密钥算法为AES。
步骤3:重启Tomcat服务
删除Tomcat的work和temp目录下的缓存文件,重启Tomcat后观察启动日志,确认密钥库相关错误不再出现。
内容的提问来源于stack exchange,提问作者Richa Manchanda
相关产品推荐
相关产品推荐

