惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
V
V2EX
aimingoo的专栏
aimingoo的专栏
爱范儿
爱范儿
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
T
The Blog of Author Tim Ferriss
月光博客
月光博客
云风的 BLOG
云风的 BLOG

Liups233の小站

玉龙雪山冰川公园游览记录 - Liups233の小站 Windows 远程桌面连接 SSL 证书与自动续期 - Liups233の小站 YubiKey OpenPGP 智能卡使用指南 - Liups233の小站 通过 WKD / OPENPGPKEY DNS 记录部署 GPG 公钥 - Liups233の小站 OpenLiteSpeed 安装与建站配置 详细教程 - Liups233 使用 DNSCrypt-Proxy 为 Linux 配置加密 DNS - Liups233 WordPress 7.0 编辑器改回无衬线字体 - Liups233の小站 Redis 数据库权限与 Unix Socket 配置 - Liups233の小站 Cloudflare 设置 mTLS 验证来源拉取 - Liups233の小站 Docker 自建 RustDesk 远程和 API 服务 - Liups233の小站 ChatGPT Go 印度区免费试用白嫖 1 年 - Liups233の小站 使用 S/MIME 证书签名并加密电子邮件 - Liups233の小站 网站域名变更迁移教程/记录 - Liups233の小站 将动漫视频刻录为视频光盘-蓝光/AVCHD DVD - Liups233の小站 百乐 CUSTOM 912 钢笔使用体验 - Liups233の小站 使用 Cloudflare mTLS 用户端凭证保护博客登入页面 - Liups233の小站 Kobo 手动安装 NickelMenu 和 KOReader - Liups233の小站 Kobo 阅读器字典缺字解决 - Liups233の小站 iCloud+ 域名邮箱的注册和使用 - Liups233の小站 9 美元一年的通配符 SSL 证书 - Liups233の小站 宝塔面板 Nginx 启用 Brotli 和 Pagespeed - Liups233の小站 拷贝 DVD/Blu-ray 光盘并使用 MeGUI 压制 - Liups233の小站 Spotify 相较 Apple Music 的优点 - Liups233の小站 欧卡/美卡自定义手排挡位布局 - Liups233の小站 内地居民到港开户汇丰和中银香港全过程 - Liups233の小站 给光驱刷入 LibreDrive 固件解锁区域和加密限制 - Liups233の小站 个人博客适用的 Cloudflare 防火墙和缓存规则 - Liups233の小站 为Kobo阅读器添加Google Drive和Dropbox功能 - Liups233の小站 百乐 PILOT Capless Fermo 钢笔评测 - Liups233の小站 业余无线电 B 类考试笔记 - Liups233の小站
为 WordPress 外发邮件添加 S/MIME 签名 - Liups233の小站
Liups233 · 2025-08-21 · via Liups233の小站
为 WordPress 外发邮件添加 S/MIME 签名

前言

跟着 WordPress 插件新手教程写了第一个插件,功能很简单,也很小众,用于给 WordPress 外发邮件添加 S/MIME 签名,在支持的邮箱应用中就会显示已签名的图标。本文会对插件进行简单的介绍,并讲解如何使用。

S/MIME 可用于电子邮件加解密、签名等,本插件专注于签名功能。电子邮件签名可以让收件人知道该电子邮件确实来自于你,并且中途未经篡改,在诸如更改密码验证等邮件中很实用。

GitHub 页面:https://github.com/liups233/wordpress-smime-email-signing

WordPress 插件页面:https://wordpress.org/plugins/smime-email-signing/

目录

前提条件

  • 本插件仅在单用户 WordPress 网站进行了测试,例如个人博客。在多用户网站上,可能无法正常运行,未来也不一定会尝试兼容多用户网站,主要我个人没有需要。
  • 仅在 PHP 8.3 及以上版本进行了测试。确保您的 PHP 环境已安装 openssl 扩展(通常默认安装)。
  • 我只测试过使用插件(如 FluentSMTP)经过外部 SMTP 服务器发送邮件。

使用教程

获取证书

您可以在各大 CA 的网站申请 S/MIME 证书,我推荐用 Actalis 的免费一年证书用于测试(但不是很安全)。在 Actalis 申请后,您可以下载包含公钥、私钥和证书链的 p12 证书文件。p12 文件的密码将发送至您的邮箱。

下载 p12 格式的 S/MIME 密钥
下载 p12 格式的 S/MIME 密钥

拆分 p12 证书

假设 p12 文件名为 “smime.p12”,请执行以下命令将其分割为独立的密钥。如果你是通过 CSR 方法申请的证书,私钥、公钥、证书链应该本来就是分开的,不需要拆分。

  • 导出私钥:openssl pkcs12 -in smime.p12 -nocerts -out smime.key
    • 系统会提示输入导入密码,即 p12 文件的密码。
    • 随后,您需要输入一个密码来保护导出的私钥。此密码即为插件设置中需要填写的密码。
    • 输入两次以确认。
  • 导出公钥:openssl pkcs12 -in smime.p12 -clcerts -nokeys -out smime.crt
    • 系统将提示输入导入密码,即 p12 文件的密码。
  • 导出证书链:openssl pkcs12 -in smime.p12 -cacerts -nokeys -out certchain.pem
    • 系统将提示输入导入密码,即 p12 文件的密码。

密钥文件开头的 Bag Attributes、subject、issuer 等字段可以保留,不影响。

设置权限

上传密钥文件到服务器后(不要上传到网站根目录下),需要为每个文件设置权限。

  • 私钥:chmod 640 smime.key
  • 公钥:chmod 644 smime.crt
  • 证书链:chmod 644 certchain.pem

插件设置

安装并激活插件后,设置页面将出现在左侧,并带有盾牌图标。您需要填写路径和密码字段,点击保存,即可完成设置。

您可以使用 SMTP 插件中的「发送测试邮件」功能进行测试。

卸载插件后,设置的路径和密码将自动删除。

屏幕截图

WordPress 插件设置-输入密钥路径和密码
插件设置-输入密钥路径和密码
S/MIME 签名在 Apple Mail 上的效果
S/MIME 签名在 Apple Mail 上的效果
S/MIME 签名在 Gmail 上的效果
S/MIME 签名在 Gmail 上的效果

常见问题

Q:插件的原理?
A:使用 PHPMailer 自带的 sign() 方法,在邮件发送前自动签名,示例见此

Q:这样储存明文密码,安全吗?
A:明文密码保存在数据库中,加密的私钥保存在文件系统里,只要两者不被同时入侵应该没问题。我觉得不够安全,但我没有想到更好的办法,欢迎提出建议。

更多其它内容可以回到〈博客主页〉看。

最后修改日期: 2025-12-08

作者