2017-08-02 4 views
0

Ich muss ein Skript zum Senden von E-Mails im Namen eines vorhandenen E-Mail-Server implementieren. Der E-Mail-Server unterstützt nur eine Authentifizierungsmethode, nämlich "Client Certificate Authentication". Ich habe nur eine E-Mail-Adresse und ein Zertifikat zur Authentifizierung über mein PHP-Skript (kein Passwort) und sende E-Mails. und das ist das einzige, was ich über den Server wissen :(.Verbinden mit SMTP-Server mit Client-Zertifikat (ohne Passwort) von PHP-Skript und senden Sie E-Mail

ich nicht viel Ahnung von Client-Zertifikat-Authentifizierung haben, haben gesucht über bereits, jedoch keine nützliche Dokumente für den speziellen Fall finden.

können einige Buddy Bitten zeigen Sie mich in der richtigen Richtung?

Antwort

0

Gute Frage. das ist ein bisschen eine Vermutung ist, aber ich würde erwarten, dass Sie über die stream context options das Client-Zertifikat deaktivieren müssen normale auth und liefern an die TLS-Verbindung übergeben.

Ich empfehle diese Änderungen über einen regulären PHPMailer SMTP + S TARTTLS Verbindung:

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

Die lokale cert-Datei sollte sowohl den Client privaten Schlüssel und das Zertifikat im PEM-Format enthalten.

Betrachten Sie this example für umfassenderen Code, der SSL-Stream-Kontextoptionen verwendet.

Verwandte Themen