我正在尝试研究如何尽可能保证我发送/接收的电子邮件的安全。
首先,我的域名有通配符 OV SSL 证书,我有.csr
、.crt
和.key
文件的副本,但我没有任何 PKCS12 文件.p12
或.pfx
,是否可以从我的 SSL 证书中获取这些文件,以便我可以通过电子邮件客户端(如 outlook、thunderbird 等)对外发电子邮件进行数字签名
其次,目前我可以并且应该对我的电子邮件客户端使用的“最安全”/“最佳”的安全设置是什么,以下是所有可用的选项。
传入选项
连接安全:
- 没有任何
- 启动TLS
- SSL/TLS(当前通过端口 993 使用)
身份验证方法:
- 普通密码(当前通过端口 993 使用)
- 加密密码
- Kerberos/GSSAPI
- NTLM
- TLS 证书
- OAuth2
传出选项
连接安全:
- 没有任何
- 启动TLS
- SSL/TLS(当前通过端口 465 使用)
身份验证方法:
- 无需身份验证(不可用)
- 普通密码(当前通过端口 465 使用)
- 加密密码(不可用)
- Kerberos/GSSAPI(不可用)
- NTLM(不可用)
- OAuth2(不可用)
最后但同样重要的一点是,对于 PHPMailer 也是如此,我应该使用 TLS 还是 SSL(哪个更好?)
$phpmailer->SMTPSecure = "tls"; // Choose SSL or TLS, if necessary for your server
答案1
尝试一下如何创建 p12。
openssl pkcs12 -export -in cert.crt -inkey cert.key -name "Your Name" -out cert.p12
以下内容对于公司部署来说已经是“安全”且实用的。
传入端口:POP3 995 或 IMAP 993 (SSL/TLS)
需要 SMTP 身份验证
外发邮件服务器 (SMTP) 端口:465 (SSL/TLS)
需要 SMTP 身份验证
最后,尽可能使用 TLS。TLS 性能更好,而某些 SSL 协议存在安全问题。
答案2
入站选项不适用于 PHPMailer。端口 465 (SMTPS) 上的 SSL 自 1998 年以来已被弃用,尽管微软似乎没有注意到这一点。请在端口 587 上使用 SMTP+STARTTLS,这是 PHPMailer 在您使用SMTPSecure = 'tls'
&时所做Port = 587
的。请注意,PHPMailer 会使用机会性 TLS,即如果您不告诉它使用 TLS 并且您连接到支持它的服务器,它将自动使用它。
最近的 PHPMailer 5.2 版本支持 Gmail 的 XOAUTH2 身份验证,而 6.0 增加了对许多其他提供商的支持。
如果您使用的 PHP 版本早于 5.6,则应该启用证书验证(PHP 5.6+ 默认执行此操作)。