【发布时间】:2012-10-04 21:25:05
【问题描述】:
对于学校作业,我们必须发送来自银行的安全电子邮件(我们就是银行)。为了保护这些电子邮件,我使用 PHPMailer。 PHPMailer 包含一个 Sign($cert_filename, $key_filename, $key_pass) 方法,该方法使用证书对电子邮件进行签名。我猜这会使电子邮件“安全”,并且客户可以真正知道是银行发送电子邮件。我正在使用 SMTP 通过我自己的域发送电子邮件。
为了获得证书,我在this website 创建了一个证书,该证书已安装在我的浏览器中。
现在的问题是:如何使用该证书来签署我使用 PHP 脚本和 PHPMailer 发送的电子邮件?我已经从我的浏览器 (FF) 中导出了证书,这会生成一个 .p12 文件,但我认为 .p12 文件不是我想要的。
任何帮助将不胜感激。
【问题讨论】:
-
您可以使用
openssl将 pkcs12 文件(您可能拥有)转换为 PHPMailer 的 .pem 证书。见这篇文章:adam-makes-websites.com/discoveries/… -
感谢您的帮助,我如何检查电子邮件是否已签名?我正在使用 gmail 来查看邮件。
-
如果您在 Gmail 中查看邮件源(“显示原件”),您应该会看到一个 base64 块,前面有一个带有
Content-Type: multipart/signed; protocol="application/pkcs7-signature";的标头 -
再次感谢,我已完成所有更改,但电子邮件尚未标记为已签名。正文也是空的(白色电子邮件,但主题有效)。如果我删除符号变量,则电子邮件显示正常。我正在使用 SMTP。有什么想法吗?
-
启用
error_reporting,在openssl_*函数调用Marin told you to edit之前删除@,或者使用set_error_handler("var_dump");来显示任何错误。
标签: php security phpmailer digital-certificate smime