允许PHP Mailer中的不安全连接


Allowing insecure connections in PHP Mailer

我遇到了这里提到的同样的问题,允许不安全的连接解决了这个问题,而其他任何方法都无法解决。你能告诉我如果我一直允许这些不安全的连接,我可能会面临什么安全问题吗?

我建议这个链接:

PhpMailer不发送邮件- TLS错误?

如果您有不安全的连接问题,让添加以下行:

$mail->SMTPOptions = array(
        'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);  

防止证书检查等

TLS履行两个角色:验证您连接的对象,以及保护传输中的数据。禁用验证会丢弃前者,但是数据在传输过程中仍然会以与经过验证的证书完全相同的方式加密,因此它仍然比没有加密要好得多。

禁用验证最明显的问题是您失去了检测连接被拦截的能力。对于isp来说,将出站SMTP连接重定向到他们自己的邮件服务器而不告诉您的防火墙配置是很常见的。如果您不验证证书,您的脚本将不会注意到它连接到错误的服务器,并将继续提交您的凭据(这可能会失败,因为它是错误的服务器)-但是您刚刚将您的ID和密码提交给中间人,您无法判断它是您的ISP还是其他人拦截您的连接。

如果你有这些问题,你知道证书名称,它被翻译成一个更好的选择…您可以显式地添加可接受的名称,而不是禁用此检查。

$mail->SMTPOptions  = array(
        'ssl' => array(
          'peer_name' => <acceptable peer name>
));

那么看看参考的例子,通过这个错误:

PHP警告:stream_socket_enable_crypto():对等证书CN=*.mail.dreamhost.com'不符合预期CN = mx1.sub4.homie.mail.dreamhost.com"/home/ikbb/domains/dev.ikbb.com/public_html/includes/phpmailer/5.2.10/class.smtp.php

您可以设置*.mail.dreamhost.com作为允许的名称