&引用;署名;PHP中的电子邮件

&引用;署名;PHP中的电子邮件,php,email,encryption,cryptography,Php,Email,Encryption,Cryptography,如何使用PHP“签名”发送电子邮件 我看到的正确标题是: signed-by mydomain.com 如果我理解正确,您希望使用PHP生成签名电子邮件 发送签名电子邮件的标准方式是S/MIME(另一种不太常见的方式是PGP)。S/MIME基本上是一个MIME消息,包含CMS消息的base64编码(CMS有时也称为PKCS#7) 从PHP实现这一点的一种方法是使用到OpenSSL的PHP绑定 我不知道signed by头应该用于什么。如果您有一个.p12文件,那么您可能需要从中提取公共证书

如何使用PHP“签名”发送电子邮件

我看到的正确标题是:

signed-by   mydomain.com

如果我理解正确,您希望使用PHP生成签名电子邮件

发送签名电子邮件的标准方式是S/MIME(另一种不太常见的方式是PGP)。S/MIME基本上是一个MIME消息,包含CMS消息的base64编码(CMS有时也称为PKCS#7)

从PHP实现这一点的一种方法是使用到OpenSSL的PHP绑定


我不知道signed by头应该用于什么。

如果您有一个.p12文件,那么您可能需要从中提取公共证书和私钥:

私钥:

openssl pkcs12 -in <YOUR_FILE>.p12 -nocerts -out privateKey.pem
openssl pkcs12-in.p12-nocerts-out privateKey.pem
公众证书:

openssl pkcs12 -in <YOUR_FILE>.p12 -clcerts -nokeys -out publicCert.pem
openssl pkcs12-in.p12-clcerts-nokeys-out publicCert.pem
然后,您可以发送一封带有以下PHP代码的签名电子邮件:

<?php

$data = "This is a test signed email";

// create a temporary file
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);


// sign the email
openssl_pkcs7_sign("msg.txt", "signed.txt",
    file_get_contents(realpath("publicCert.pem")),
    array(file_get_contents(realpath("privateKey.pem")), '<YOUR_PASS>'),
    array(
        "To" => "john@example.com",
        "From: Jane Doe <jane@example.com>",
        "Subject" => "This is a test"
        )
    );



exec(ini_get("sendmail_path") . " < signed.txt");

请解释您到底想要什么。你不只是想要签名者标题-你想要域密钥或类似的东西,对吗?谢谢你,这正是我需要的!:数据这就是为什么需要这些标题: