SYSTEM IMPORT:导入系统导出加密问题
导入加密的系统导出文件遇到关键问题
Artifactory有一些加密不同配置文件的密钥。导致导入/导出问题的是artifactory.key。可以使用以下两个REST API调用激活和取消该特定密钥的加密。
//m.si-fil.com/confluence/display/JFROG/Artifactory+REST+API#ArtifactoryRESTAPI-ActivateArtifactoryKeyEncryption
//m.si-fil.com/confluence/display/JFROG/Artifactory+REST+API#ArtifactoryRESTAPI-DeactivateArtifactoryKeyEncryption
运行导入时出现的问题
如果我们对加密环境进行系统导出,则很有可能在导入时遇到问题。这artifactory。Key用于加密导出中包含的artifactory.config.xml中的密码。当我们运行其中一个导出时,将在日志中看到以下错误。[jfrt] [ERROR] [1527aaa13675d151] [c.][http-nio-8081-exec-2] -重新加载配置失败:javax.crypto.BadPaddingException:给定的最终块未正确填充。如果在解密过程中使用了坏密钥,就会出现这样的问题。
[jfrt] [ERROR] [1527aaa13675d151] [j .c.][http-nio-8081- exex -2] -最后一次重试失败:失败的重新加载配置:javax.crypto.BadPaddingException:给定的最后块没有正确填充。如果在解密过程中使用了坏密钥,就会出现这样的问题。不再尝试
[jfrt] [1527aaa13675d151] [ifactoryApplicationContext:728] [http-nio-8081-exec-2] -系统导入失败:Could not merge and save new descriptor [org.m.si-fil.common.ExecutionFailed: Last retry Failed: Failed to reload configuration: javax.crypto.BadPaddingException: Given final block not not正确填充。如果在解密过程中使用了坏密钥,就会出现这样的问题。不再尝试]
这将导致导入失败。
解决方案/解决方案
为了解决这个问题,我们可以考虑实现两个选项。第一种方法是在运行导出之前运行上面提到的解密API。工作流将是运行API请求(对成功解密的响应将是“DONE”)。然后我们将运行系统导出,将此导出迁移到新服务器,运行系统导入,然后通过运行加密API在成功导入后完成。这将生成一个新的工件。此迁移实例的键。
第二个选项(如果不支持解密)是手动更新artifactory.config.xml,然后用纯文本替换加密的密码,或者从这个config.xml文件中删除整个存储库配置。如果我们确实完全删除了这个存储库,那么我们需要在导入之后重新添加这个存储库。
为了更深入地了解这个手动过程,我们正在寻找的密码可以是需要用户/密码或令牌来通过远程注册中心进行身份验证的远程存储库。这可能是另一个Artifactory实例或某些外部注册中心。下面是一个存储库的配置示例:
< remoteRepository >
<键> test-remote关键> < /
<类型> npm > < /类型
<笔记> < /笔记>
< includesPattern > * * / * < / includesPattern >
< excludesPattern > < / excludesPattern >
< repoLayoutRef > npm-default < / repoLayoutRef >
V2 < dockerApiVersion > < / dockerApiVersion >
........................................
........................................
真正< blockMismatchingMimeTypes > < / blockMismatchingMimeTypes >
< mismatchingMimeTypesOverrideList > < / mismatchingMimeTypesOverrideList >
假< / bypassHeadRequests < bypassHeadRequests > >
<用户名>管理> < /用户名
<密码>JE2fRswdAyuhgd2vVrevMgfoCzwHTpLu2WVP9EaZ2wJhYy87cU< /密码>
假< / allowAnyHostAuth < allowAnyHostAuth > >
15000年< socketTimeoutMillis > < / socketTimeoutMillis >
假< / enableCookieManagement < enableCookieManagement > >
假< / enableTokenAuthentication < enableTokenAuthentication > >
假< / disableProxy < disableProxy > >
假< / propagateQueryParams < propagateQueryParams > >
假< / disableUrlNormalization < disableUrlNormalization > >
< / remoteRepository >
我们可以在配置文件中搜索这个“JE”,因为这将是我们需要更新的加密密码的前两个字符。在更新或删除所有这些加密密码之后,我们应该能够成功运行System Import。
