对于 authorize.net 的 TLS 升级,它基于您服务器的 OpenSSL 库版本。要查看是否兼容,请运行以下命令:
openssl s_client -connect secure.authorize.net:443
如果您收到这样的单行错误消息:
6641:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:586:
那你不兼容。要修复,您需要在 Linux 中更新 OpenSSL 或从此处获取最新的 OpenSSL - https://www.openssl.org/source/
对于构建,您可能需要像这样配置它:
export CFLAGS=-fPIC
./config shared
make
make install # this one as root
理论上,更新后,最好从源代码重建 ruby。但是,如果没有,你可以做一个技巧:
创建一个新文件,我在与 ruby 相同的目录中调用了我的 ruby_openssl。该文件应具有以下内容:
#!/bin/sh
export LD_PRELOAD=/lib64/libssl.so.1.0.0:/lib64/libcrypto.so.1.0.0
exec /opt/ruby-1.8.7-p352/bin/ruby $*
LD_PRELOAD 应该转到通过安装 OpenSSL 安装的共享文件,无论您碰巧安装它们。
然后,在您的 apache 配置中,在您引用 ruby 的任何位置引用您的新 ruby_newopenssl。