加密密钥轮换疑难解答: CVE-2024-34102
本文旨在帮助商家在已经在CVE-2024-34102上执行了此文章中概述的步骤后,排除加密密钥轮换问题。
如果您已执行了上述文章中的步骤,并且在轮换加密密钥时遇到问题,我们提供了独立的修补程序来帮助解决潜在问题。
为了帮助说明以上已传达和总结的步骤,以便针对CVE-2024-34102提供保护,以及下面提供的其他疑难解答,您还可以使用此流程图:
{modal="regular"}
如何应用隔离的修补程序以运行新命令
解压缩文件,并参阅我们的支持知识库中的如何应用Adobe提供的编辑器修补程序以获取说明。
在不使用环境变量的情况下添加新的加密密钥
默认应用程序行为是将加密密钥存储在app/etc/env.php
文件中。
文档🔗中概述的步骤描述了如何使用Admin接口在该文件中更改此密钥。
通过本节中提供的步骤和隔离修补程序,您可以轻松更改该文件中的值,并且可以解决通过Admin界面可能遇到的问题。
但是,管理加密密钥的最简单、更安全的方法是使用环境变量。 如果您已在使用环境变量,或者有兴趣使用环境变量来管理此密钥,可参阅介绍这些步骤的单独章节。
受影响的产品和版本
Adobe Commerce on Cloud、Adobe Commerce内部部署和Magento Open Source:
- 2.4.7-p1及更早版本
- 2.4.6-p6及更低版本
- 2.4.5-p8及更低版本
- 2.4.4-p9及更低版本
用于加密密钥轮换详细信息疑难解答的隔离修补程序
根据您的Adobe Commerce/Magento Open Source版本,使用以下附加的修补程序:
对于版本2.4.7、2.4.7-p1:
对于版本2.4.6、2.4.6-p1、2.4.6-p2、2.4.6-p3、2.4.6-p4、2.4.6-p5、2.4.6-p6:
对于版本2.4.5、2.4.5-p1、2.4.5-p2、2.4.5-p3、2.4.5-p4、2.4.5-p5、2.4.5-p6、2.4.5-p7、2.4.5-p8:
对于版本2.4.4、2.4.4-p1、2.4.4-p2、2.4.4-p3、2.4.4-p4、2.4.4-p5、2.4.4-p6、2.4.4-p7、2.4.4-p8、2.4.4-p9:
安装隔离修补程序后,请使用新的CLI命令更改活动加密密钥。
-
此新命令应在包含要更新的密钥的
app/etc/env.php
文件的环境中执行。 -
确认新命令存在:
code language-none bin/magento list | grep encryption:key:change
您应该会看到以下输出:
code language-none encryption:key:change Change the encryption key inside the env.php file.
-
更改加密密钥:
code language-none bin/magento encryption:key:change
-
如果您已在生产系统上执行此命令,则无需执行任何进一步操作。
如果您在开发系统上运行此命令,则 必须 将此更改导入您的生产系统,就像您通常部署敏感配置设置一样。
使用环境变量而非隔离的修补程序更新加密密钥
作为上述部分的替代方法,这些步骤将允许您添加新的加密密钥,同时保留现有加密数据,即使您当前使用的是默认app/etc/env.php
也是如此。
本节适用于Cloud和Cloud Starter上的Adobe Commerce,但也适用于本地Adobe Commerce,尽管变量的确切步骤和位置将取决于您的基础架构。
收集当前值
在任一情况下,该值都可能是一个多行值,并包含多个随机数据行。
为2.4.7x版本生成新值
加密密钥是以base64编码并以base64
为前缀的32字节随机数据。
要生成新密钥,请执行以下操作:
-
使用您选择的工具,生成使用base64编码的32个随机字节的数据。 例如,使用OpenSSL CLI可以运行
openssl rand -base64 32
,但可以使用任何可信的密码随机生成工具。 -
为该值添加前缀
base64
。 例如,如果openssl
命令输出 ABC123,则值将变为:base64ABC123 -
将生成的值附加到上面收集的现有值。 例如,如果现有值为 base64HelloWorld,则新值将变为:
code language-none base64HelloWorld base64ABC123
为2.4.6x及更早版本生成新值
2.4.6x及更早版本的加密密钥是采用hex编码格式的16字节随机数据。
要生成新密钥,请执行以下操作:
-
使用您选择的工具生成16个随机字节的数据。 例如,使用OpenSSL CLI可以运行
openssl rand -hex 16
,但可以使用任何可信的密码随机生成工具。 -
将生成的值附加到上面收集的现有值。 例如,如果现有值为 abc123,而上一步的随机值为 456def,则新值将变为:
code language-none abc123 456def
添加新环境变量
使用Cloud Console或 magento-cloud CLI将env:MAGENTO_DC_CRYPT__KEY
环境变量设置为此新值。
保存变量后,将自动触发重新部署,从而应用值。
安全更新
可用于Adobe Commerce的相关安全更新: