OpenSSL 连接错误调用 stream_socket_enable_crypto()

OpenSSL 连接错误调用 stream_socket_enable_crypto()

在我的 php 编码中,我有以下使用 SWIFT MAILER 类的行

if(!stream_socket_enable_crypto($this->smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {

  return false;

}

然而很少(并非总是)我会得到以下 php 错误

stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

我不确定问题出在哪里,或者我应该忽略它,因为这种情况偶尔才会发生

答案1

我遇到了同样的错误。

stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:1408F10B:SSL 例程:SSL3_GET_RECORD:版本号错误

这是由于不正确的 SMTP 设置导致的。我曾:

$transport = Swift_SmtpTransport::newInstance('mail.myserver.com', 465, 'tls');

当我把它改正为

$transport = Swift_SmtpTransport::newInstance('mail.myserver.com', 465, 'ssl');

它工作正常。这是一个相当不直观的错误信息,但我最终还是做到了。

答案2

在 php.ini 中搜索行

; extension=php_openssl.dll

并删除;因此变成:

extension=php_openssl.dll

然后保存并重新启动并享受。

答案3

通常routines:SSL3_GET_RECORD:wrong version number是根本不使用 SSL/TLS 的服务器代码。

因此,请务必先检查这一点。

相关内容