Cherysun’s Tech Cafe

在 macOS 和 iOS 上使用 S/MIME 数字签名和加密邮件

S/MIME (Secure Multipurpose Internet Mail Extensions)被称为安全多用途网际邮件扩充协议1,看起来名字很复杂,简单地来理解,就是我们可以使用 S/MIME 来对发送的邮件进行数字签名(digital signature)和加密(encryption)。对邮件进行加密可以防止邮件在递送的过程中被其他人窥探和篡改。

下面就逐步说明如何在 macOS 和 iOS 上使用 S/MIME 数字签名和加密邮件。在此之前,建议先阅读“Apple 支持”所提供的有关《在 iOS 的 Exchange 环境中使用 S/MIME 发送加密邮件》的文档,以简要熟悉在 iOS 上配置 S/MIME 的操作流程。

将 S/MIME 配置在 macOS 上

向 CA 申请 S/MIME 邮件证书并导入至 Keychain Access

要使用 S/MIME 发送数字签名和加密邮件,首先需要拥有 S/MIME 邮件证书。因而我们需要向 CA(Certificate Authority,即数字证书认证机构)申请邮件证书。Comodo、Symantec2、GoDaddy、GlobalSign、StartCom 这些 CA 都可以提供邮件证书的申请服务,由于作为个人使用,在这里我们选择 Comodo 的免费邮件证书签发服务。

A certificate authority or certification authority (CA) is an entity that issues digital certificates. A digital certificate certifies the ownership of a public key by the named subject of the certificate. This allows others (relying parties) to rely upon signatures or on assertions made about the private key that corresponds to the certified public key. In this model of trust relationships, a CA is a trusted third party-trusted both by the subject (owner) of the certificate and by the party relying upon the certificate.

—Wikipedia

这里 通过 Instant SSL by Comodo 来申请免费的邮件证书。点击 GET NOW 开始申请。

第 1 步:为你的证书提供详细信息

填写“Application for Secure Email Certificate”表单,首先分别填写 First NameLast NameEmail AddressCountry 信息,然后在私钥选项中选择 Key Size (bits) 为“2048 (High Grade)”。

需要注意的是,你需要填写 Revocation Password 即吊销密码。当你发现自己的私钥(private key)被泄露时,你可以使用吊销密码向 CA 申请将公钥(public key)吊销(revoke)。如果 CA 吊销了证书,那么其他人在更新了 CRL 即证书吊销列表后就会得知该证书已经被吊销,不能够再被信任。通过这样的机制就可以避免私钥被泄露所导致的安全问题。因而 revocation password 非常重要,你需要为其设置一个复杂密码,且避免与其他服务的密码共用,同时应当进行妥善保管。

接下来阅读 Email Certificate Subscriber Agreement 并选择 I ACCEPT the terms of this Subscriber Agreement. 并点击 Next >。是否要为 Comodo Newsletter 勾选“Opt in?”取决于你是否想要接收来自 Comodo 的商业推广邮件。

第 2 步:获取并安装你的证书

当正确填写申请表单信息并点击 Next > 后,会得到“Application is successful!”的提示,你所申请的邮件证书将会通过邮件发送至你在申请表单中所填写的邮件地址。

在这封邮件中有 2 个红色的按钮,点击上方的 Click & Install Comodo Email Certificate 可以跳转至浏览器并下载你所申请的证书。

请注意:如上所说,如果你的私钥被泄露,那么可以在这封邮件中点击下方的 Revoke Comodo Email Certificate 以吊销证书。

当浏览器中显示“Attempting to collect and install your Free Certificate…”时,稍等将会开始下载。一般地,这个文件会被命名为 CollectCCC.p7s。尽管这封邮件会存储在你的邮箱中,但还是强烈建议将下载所得到的证书文件 CollectCCC.p7s。

打开所得到的证书文件 CollectCCC.p7s 以将其导入到“钥匙串访问”。或者在 macOS 上打开“钥匙串访问”,默认地,“钥匙串访问”位于 /Applications/Utilities/Keychain\ Access.app,我们可以通过以下几种方式将其启动。

  • 在 Launchpad 中展开“其它”文件夹,启动“钥匙串访问”。
  • 打开 Finder,在“应用程序”文件夹中打开“实用工具”,启动“钥匙串访问”。
  • 使用 Spotlight 搜索“Keychain Access”或“钥匙串访问”,并将其启动。

启动“钥匙串访问”后通过菜单选取“文件”>“导入项目…”,然后选择刚刚下载所得到的证书文件 CollectCCC.p7s。

证书会被默认导入到钥匙串“登录”中。下面我们在“钥匙串访问”中的左侧“钥匙串”栏目中选择“登录”项,并在左侧“种类”栏目中选择“证书”项,以检查该证书是否被成功导入。如果列出有被签发者 COMODO SHA-256 Client Authentication and Secure Email CA 签发的以所申请的邮箱地址为名称的证书,即说明导入成功。正如下图所示,为了安全起见,图中已将其他无关的证书隐去。

为 S/MIME 邮件证书安装中级证书颁发机构证书

一般地,当导入 CollectCCC.p7s 时,除了导入所申请的邮件证书,还会自动导入名为 COMODO SHA-256 Client Authentication and Secure Email CA 的中级证书颁发机构证书(通常也被称之为 intermediate certificate,即中间证书)和名为 Add Trust External CA Root 的根证书(root certificate)。

由于 Add Trust External CA Root 被预先保存在钥匙串“系统根证书”中,所以本不需要重复导入到钥匙串“登录”中。将其重复导入至钥匙串“登录”中是为了防止该根证书并未被预置的情况。

中级证书颁发机构(Intermediate Certificate Authority)是根 CA 以下的一个或多个级别的从属 CA,通常向其他 CA 颁发证书。CA 为了能够确保根证书的安全,会使用根证书签发中间证书作为代理,再使用中间证书签发客户的终端证书并维护证书的信任链(chain of trust)。

在这里,我们所申请的邮件证书是由 COMODO SHA-256 Client Authentication and Secure Email CA 所签发的,该中级证书颁发机构证书又由 Add Trust External CA Root 所签发,即构成了一个完整的信任链,因而当导入 CollectCCC.p7s 时还会自动导入中间证书,以维护这个信任链。

Email certificate: cherysun.zhang@gmail.com
            *
            *
            *
COMODO SHA-256 Client Authentication and Secure Email CA
            *
            *
            *
Add Trust External CA Root

当查看我们所申请的邮件证书时,会显示绿色的“此证书有效”。如果缺少了根证书或者中间证书,则会显示红色的“此证书是由未知颁发机构签名的”。

现在,显示“此证书有效”,这意味着我们所申请的邮件证书已经可以正常使用了。

使用 Apple Mail 发送经 S/MIME 证书数字签名和加密邮件

当完成了证书的导入并建立了完整的信任链后,就可以非常方便地使用 Apple Mail 发送经 S/MIME 证书数字签名和加密的邮件了。

首先,需要在导入证书后退出 Apple Mail(⌘Q)并重新打开。然后编写新邮件。这时可以看到与以往所不同的是,在主题旁边多出了两个按钮,当对勾徽章图标为蓝色时意味着已启用数字签名,再次点击则可以不使用数字签名;当显示蓝色的上锁图标时,意味着已启用加密,如果显示黑色的开锁图标,则意味着尚未启用加密。

值得注意的是,如果想要发送经 S/MIME 证书数字签名和加密的邮件,一定要拥有你自己的私钥,这意味着同时拥有公钥和私钥。如果你没有私钥,那么上锁图标和对勾徽章图标均会呈灰色的不可用状态。

如果此前证书配置存在问题,则上锁图标和对勾徽章图标均会呈灰色的不可用状态,你也无法点击打开,直到正确地配置了证书和信任链。

如此同时,在你发送加密的邮件时,还需要拥有收件人的公钥,你可以向收件人索取。你也可以将自己的公钥导出并发送给其他人,以便他们可以向你发送数字签名和加密的邮件。如果你没有收件人的公钥,那么 Apple Mail 则会提示你“此邮件不能加密”。

当收件人接收到你所发送的数字签名和加密邮件时,这封邮件会提示你“安全性:已签名,加密的”。这封邮件在传输过程中无法被其他人窥探和篡改,当你通过浏览器登录到你的邮箱时,也无法查看这封邮件的内容。只有在你使用自己的密钥通过 Apple Mail 或其他邮件客户端才可以进行查看,这在很大程度上保护了邮件的安全。

将 S/MIME 配置在 iOS 上

从 Keychain Access 中导出 S/MIME 邮件证书

启动“钥匙串访问”后,找到并选中你的 S/MIME 邮件证书,通过菜单选取“文件”>“导出项目…”,在 存储为 中将其命名为“My S/MIME Certificate”,在 位置 中选择你希望将其保存在的位置,请注意要确保 文件格式 选择为“个人信息交换 (.p12)”,然后点击存储。

为导出的文件输入密码进行保护,该密码会在 iOS 上安装描述文件时再次使用,所以需要牢记。同时,建议不要将密码留空,以免无密码导致在 iOS 上导入时无法进行下一步。

将导出的 .p12 文件通过 Apple Mail 发送到自己的邮箱

在 macOS 上打开 Apple Mail 并编写新邮件,将刚刚导出的 My S/MIME Certificate.p12 文件拖动到新邮件正文中作为附件,并启用数字签名。收件人填写自己的邮箱地址,并确保该邮箱帐户已被添加到在你的 iOS 设备中。然后发送该邮件。

在 iOS 设备上检查新邮件并安装配置文件

在 iOS 上的 Apple Mail 中打开刚刚由 macOS 发送的新邮件,并点击其中的附件 My S/MIME Certificate.p12 文件。

如果同时拥有 Apple Watch,则选择安装在 iPhone 或 iPad 上,而非安装在 Apple Watch。

安装描述文件时会提示正在安装的是一个名为“身份证书”的为签名文件,不用担心,点击“安装”即可。然后输入你 iPhone 或 iPad 的设备密码(即与 Touch ID 配合使用的设备解锁密码),确认后再输入此前从 macOS 上的 Keychain Access 导出证书为 My S/MIME Certificate.p12 文件时所设定的文件保护密码并再次确认。

至此,即可成功地将证书安装在你的 iOS 设备上。在 iPhone 或 iPad 上打开“设置”>“通用”>“描述文件”,可以查看到刚刚安装的配置描述文件。

为 Apple Mail 配置启用 S/MIME

在 iPhone 或 iPad 上打开“设置”>“邮件”>“帐户”,选择与 macOS 上 Apple Mail 登录的相同的邮箱帐户,这里以我的 Gmail 为例。继续选择“帐户”>“高级”,在 S/MIME 项目中启用 S/MIME,然后分别启用“签名”和“默认加密”,并选择刚刚导入的证书。

返回后点击“完成”按钮,以保存有关 S/MIME 的设置。请注意,在“帐户”界面务必点击“完成”,如果点击了“取消”则无法启用 S/MIME。

至此,即完成了在 iOS 上使用 S/MIME 数字签名和加密邮件的设置。你可以在 iOS 上通过 Apple Mail 发送经 S/MIME 数字签名和加密的邮件。

安装收件人的公钥以发送加密邮件

此前我们有提到在你发送加密的邮件时,还需要拥有收件人的公钥。当我们接收到某人发来的具有数字签名或加密的邮件时,在 iOS 上我们需要手动将其公钥安装到设备上。以我们之前向自己的邮箱发送的经过数字签名的(刚刚用来安装 My S/MIME Certificate.p12 文件的)邮件为例。

打开该邮件,在发件人处点击带有对勾徽章图标的发件人名称,以查看该发件人的详细信息。这里会显示“发件人已使用信任的证书给此邮件签名”,点击 显示证书,该证书正是该发件人的公钥。点击 安装 即可。

这个过程在 macOS 上可以被系统自动完成,而在 iOS 上则需要我们手动安装。

这样我们就安装了该人的公钥,可以将其作为收件人向其发送加密邮件了。

  1. 维基百科对于 S/MIME 的解释:https://zh.wikipedia.org/wiki/S/MIME。 

  2. Symantec 于 2010 年收购了 Verisign 的证书业务。 

感谢您的支持与贡献

您的捐款将使您阅读到的内容变得更好。

支持微信支付和支付宝。

感谢您的支持与贡献

您的捐款将使您阅读到的内容变得更好。

触摸并按住二维码,选择识别图中二维码