解决加密密钥问题

本文就如何解决加密密钥未随数据库转储一起移动到其他环境所导致的问题进行了讨论。

受影响的产品和版本

  • 云基础架构上的Adobe Commerce 2.2.x、2.3.x

问题

数据库转储从生产环境导入到暂存/集成环境后,对于需要使用商家凭据的付款集成,保存的信用卡号显示错误和/或付款失败。

原因

用于加密敏感数据(如信用卡号和商户凭证)的加密密钥未存储在数据库中,因此在数据库转储导入/导出后不会传输到其他环境。

解决方案

您需要从源环境中复制加密密钥并将其添加到目标环境中。

要复制加密密钥,请执行以下操作:

  1. SSH到作为数据库转储源的项目,如开发人员文档中的SSH到环境中所述。
  2. 在文本编辑器中打开app/etc/env.php
  3. 复制cryptkey值。
return array ('crypt' =>      array ('key' => '<your encryption key>', ),);

设置目标项目的键值:

  1. 打开云控制台并找到您的项目。
  2. 设置CRYPT_KEY(在我们的开发人员文档中)变量的值,如我们的开发人员文档中的配置您的项目中所述。 这将触发部署过程,每次部署时app/etc/env.php文件中的CRYPT_KEY将被覆盖。

或者,您可以在app/etc/env.php文件中手动覆盖加密密钥:

  1. SSH连接到目标环境。
  2. 在文本编辑器中打开app/etc/env.php
  3. 将复制的数据粘贴为cryptkey值。
  4. 保存编辑的env.php
  5. 通过运行bin/magento cache:clean或在​ 系统 > 工具 > 缓存管理 ​下的Commerce管理员中清除目标环境中的缓存。
recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a