有人设法获得 ACS 7+ 的工作密钥库,用于社区 zip 分发版?
我已经在 Solr 中使用了 mTLS,但问题是 Alfresco 日志抱怨其自己的加密密钥库:
org.alfresco.error.AlfrescoRuntimeException: 08280000 Keystores are invalid
...
Caused by: org.alfresco.encryption.InvalidKeystoreException: The key with alias metadata has been changed, re-instate the previous keystore
我正在使用
alfresco-content-services-community-distribution-7.4.0.zip
中的默认密钥库。这是两个文件:
-rw-r--r-- 1 foo foo 645 May 3 20:59 keystore
-rw-r--r-- 1 foo foo 359 May 3 20:59 keystore-passwords.properties
其中“keystore”是“Java JCE KeyStore”。这两个文件被复制到服务器目录
/opt/tomcat/updated/shared/classes/alfresco/extension/keystore/metadata-keystore/
中,并且:
# shared/classes/alfresco-global.properties
dir.keystore=/opt/tomcat/updated/shared/classes/alfresco/extension/keystore
还有
# bin/catalina.sh
export JAVA_TOOL_OPTIONS="\
-Dencryption.keystore.type=JCEKS \
-Dencryption.cipherAlgorithm=DESede/CBC/PKCS5Padding \
-Dencryption.keyAlgorithm=DESede \
-Dencryption.keystore.location=/opt/tomcat/updated/shared/classes/alfresco/extension/keystore/metadata-keystore/keystore \
-Dmetadata-keystore.password=mp6yc0UD9e \
-Dmetadata-keystore.aliases=metadata \
-Dmetadata-keystore.metadata.password=oKIWzVdEdA \
-Dmetadata-keystore.metadata.algorithm=DESede"
换句话说,
JAVA_TOOL_OPTIONS
指向实际的JCE密钥库,dir.keystore
指向该密钥库之上的两个目录。这不起作用,给出上面的错误。对于 JAVA_TOOL_OPTIONS
和 dir.keystore
应该指向的内容(即 JCE KeyStore,或元数据目录,或元数据目录上方的密钥库目录),网络上有很多变体,我想我已经尝试过几乎所有这些。我也尝试过:
alf_data
中找到密钥库目录,但我认为这现在已经过时了keytool
生成新的密钥库(即从此处和此处“手动生成密钥库”)KeyData
在 keystore-passwords.properties
中添加新的 org.alfresco.encryption.GenerateSecretKey
(即“自动密钥库生成”)这些都不起作用,会产生“密钥库中缺少密钥元数据”或“具有别名元数据的密钥已更改,请重新恢复以前的密钥库”。有什么想法吗?
错误消息或多或少是不言自明的:
Caused by: org.alfresco.encryption.InvalidKeystoreException: The key with alias metadata has been changed, re-instate the previous keystore
您使用或生成了新的元数据加密密钥,但您不应该对现有存储库执行此操作,除非您知道自己在做什么以及原因。在这种情况下,您需要将之前的密钥配置为
encryption.keystore.backup.location
,否则 alfresco 无法解密加密的属性。不幸的是,Alfresco 加密了一个属性来存储 Alfresco 版本,如果元数据密钥不再可用,您将无法再次启动存储库。
希望您仍然在某处保留旧的元数据密钥,这样您就可以将旧的元数据密钥配置为后备。
例如:
# backup location is used for migration - if decrypting from encryption.keystore doesn't work
# alfresco tries encryption.keystore.backup which is normally empty
encryption.keystore.backup.location=${dir.keystore}/../backup-keystore/metadata.keystore
encryption.keystore.backup.provider=
encryption.keystore.backup.type=JCEKS
encryption.keystore.backup.keyMetaData.location=${dir.keystore}/../backup-keystore/metadata-keystore-passwords.properties
如果使用当前配置的元数据密钥解密失败,Alfresco 将回退在 backup.location 中找到的密钥。
Alfresco 必须生成新的密钥库,因为 SSL 不再支持 DES/3DES 密钥,但这并不一定意味着您必须替换元数据密钥。
请检查 Alfresco 文档中的 Mutual TLS
将来您可能更喜欢存储库和 SOLR 的共享秘密通信模式而不是相互 TLS 来保护 Alfresco Repository 和 Solr 之间的通信,但如前所述,元数据密钥与确保与 Solr 通信安全的密钥库无关。