【问题标题】:Connect to smtp server with client certificate (without password) from php script and send email从 php 脚本使用客户端证书(无密码)连接到 smtp 服务器并发送电子邮件
【发布时间】:2017-08-02 07:16:09
【问题描述】:

我需要实现一个脚本来代表现有电子邮件服务器发送电子邮件。 电子邮件服务器仅支持一种身份验证方式,即“客户端证书身份验证”。我只有一个电子邮件地址和一个证书来通过我的 php 脚本(无密码)进行身份验证,并发送电子邮件。这是我对服务器的唯一了解:(。

我对客户端证书身份验证不太了解,已经搜索过但找不到任何针对特定案例的有用文档。

能否请朋友指出正确的方向?

【问题讨论】:

    标签: php smtp ssl-certificate phpmailer x509certificate


    【解决方案1】:

    好问题。这有点猜测,但我希望您需要禁用正常身份验证并通过传递给 TLS 连接的stream context options 提供客户端证书。

    我建议通过常规 PHPMailer SMTP+STARTTLS 连接进行这些更改:

    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;
    $mail->SMTPAuth = false;
    $mail->SMTPOptions = [
        'ssl' => [
            'verify_peer'  => true,
            'local_cert' => '/path/to/client_cert_and_key.pem'
        ]
    ];
    

    本地证书文件应包含客户端私钥和 PEM 格式的证书。

    查看this example 以获得使用 SSL 流上下文选项的更完整代码。

    【讨论】:

      猜你喜欢
      • 2016-08-16
      • 2021-10-01
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多