正在更新 Authorize.net,因为 TLS 1.0 和 1.1 现已弃用

Updating Authorize.net since TLS 1.0 and 1.1 is now deprecated

背景

我已经接管了对 运行 非常旧版本 PHP 的网站的更新。将网站从 5.3 移至 7.1 后,我注意到 authorize.net 不断发送电子邮件,说明

we will no longer allow TLS 1.0 and 1.1

它声明它将在接下来的几周内完全停止工作,我不确定如何知道该站点是否使用这个已弃用的 TLS 版本。我想我应该能够通过应用程序中的 authorize.net 类 知道。但是代码没有以任何方式引用 TLS。我还假设我可以通过正在使用的端点知道,但我还没有看到任何关于正在使用的 TLS 版本与正在使用的端点有关的信息。

有谁知道可靠的测试方法并知道我们是否确实在我们的站点中使用旧版本的 TLS?或者,如果有可能我们在根本不依赖 TLS 的站点中使用非常旧的 authorize.net 版本?

示例代码

这些是应用程序中使用的一些 类 的开头。也许有人对你正在使用的 authorize.net api 版本指定你正在使用的 TLS 版本有一些了解。

class.aim.cc.license.php

<?php
/*********************/
/*                   */
/*  Dezend for PHP5  */
/*         NWS       */
/*      Nulled.WS    */
/*                   */
/*********************/

class authnetcc
{

    var $fields = array( );
    var $license_key;
    var $gateway_url = "https://secure.authorize.net/gateway/transact.dll";
    var $proxy_url;
    var $proxy_port;
    var $secure_source = false;
    var $error_code;
    var $error_message;
    var $error_field;
   ...

AIM.class.php

<?php
/**
* CLASS AIM
*
*
*/
class AIM {
    // login credentials that Authorize.net uses for verification
    var $login_id = '';
    var $trans_key = '';

    // server
    var $server = '';

    // credit card information
    var $cc_name = '';
    var $cc_number = '';
    var $cc_month = '';
    var $cc_year = '';
    var $cc_code = '';
    var $cc_type = '';

    // error stack array
    var $errorStack = array();

    // modes
    var $testMode = false;
    var $debugMode = false;
    var $errorRetries = 2;

    // buyer information
    var $buyer = array();

    // response information
    var $status = '';
    var $subcode = '';
    var $response_code = '';
    var $response_text = '';
    var $approval_code = '';
    var $md5hash = '';
    var $code = '';
    var $remaining = array();

    // constructor
    function __construct($login_id, $trans_key) {
        $this->login_id = $login_id;
        $this->trans_key = $trans_key;

        $this->setTesting(0);
    }
    ...

不是编码问题。 。与所有其他符合 PCI 标准的支付网关一样,它们需要使用 TLS 1.2 或更高版本才能保持 PCI 标准,这意味着他们的所有客户也必须合规。这是您在服务器上配置的东西,而不是在您的 PHP 代码中。如果您使用的是共享网络托管服务提供商,则需要联系他们并要求转移到支持 TLS 1.2 的服务器或寻找支持它的新主机。

仅供参考,您还应该将 new Akamai URL 用于他们的 API,这也必须更新。继续使用的正确 URL 是 https://api2.authorize.net/xml/v1/request.api