Sun Java System Messaging Server 6 2005Q4 管理指南

验证专用密钥和公共密钥

在 Communications Express Mail 使用专用密钥或公共密钥之前,必须先通过图 20–2 所示的验证测试。本节其余部分将介绍根据 CRL 检查公共密钥的证书的详细信息。

图 20–2 验证专用密钥和公共密钥。

该图形显示了用于验证专用密钥和公共密钥的流程。

查找用户的专用或公共密钥

当 Communications Express Mail 用户具有多个专用-公共密钥对和多个电子邮件地址(主电子邮件地址、备用电子邮件地址或别名电子邮件地址)时,这些密钥可能会与多个地址相关联。在这种情况下,S/MIME applet 必须找到所有密钥以进行验证。使用 smime.conf 文件中的 usercertfilter 参数来定义过滤器,该过滤器将在根据 CRL 检查公共密钥的证书时为密钥的拥有者创建一个邮件地址列表。有关更多信息,请参见smime.conf 文件的参数中的 usercerfilter

何时根据 CRL 检查证书?

证书撤销列表(即 CRL)是发布密钥对和证书的 CA 所维护的已撤销证书的列表。启用 CRL 检查时,只要发出了查看证书是否已撤销的证书请求,就会使系统检查 CRL。

当将 smime.conf 文件中的 crlenable 设置为 1 时,将在找到未过期密钥后执行 CRL 测试。将根据 CRL 检查公共密钥的证书。每个 CA 只能有一个 CRL,但是同一个 CRL 可以放在多个不同的位置上。

当 S/MIME applet 向 Messaging Server 发送检查证书的请求后,Messaging Server 将根据 CRL 检查证书。公共密钥证书用于验证公共密钥。由于专用密钥是保密的,只能由拥有该密钥的人员使用,因此不能根据 CRL 直接检查专用密钥。要确定专用密钥是否有效,需要使用密钥对的公共密钥证书。当公共密钥的证书通过 CRL 测试时,关联的专用密钥也就通过了该测试。

导致证书撤销的原因有很多,例如,证书的拥有者已离开您的工作单位或丢失了智能卡。

在下列三种情况下需要根据 CRL 检查证书:

访问 CRL

一个证书包含零个或多个 URL(称为分发点),Messaging Server 使用这些 URL 来查找 CRL。如果证书没有 CRL URL,则不能根据 CRL 检查该证书,并且会在不知道密钥真实状态的情况下使用专用或公共密钥对邮件进行签名或加密。

如果 Messaging Server 在尝试所有可用的 URL 后都无法查找 CRL 或无法获得对 CRL 的访问权,证书的状态将被视为未知。将由 revocationunknown 的设置来确定是否使用处于未知状态的专用或公共密钥。

尽管每个 CA 只能有一个 CRL,但可以在多个位置保存同一个 CRL 的多个副本,因而用户的公共密钥证书对应多个 URL。Messaging Server 将尝试证书的所有 URL 位置,直到获得对 CRL 的访问权。

通过定期从 CA 将最新的 CRL 下载到所需位置,您可以管理 CRL 的多个副本从而优化访问。尽管您无法更改证书中嵌入的 URL,但您可以通过将证书中的 URL 映射到包含 CRL 信息的新 URL,来重新定位 Messaging Server 以使用新的 CRL 位置。请使用下面的语法在 LDAP 目录(请参见表 20–3 中的 crlmappingurl)中创建一个或多个映射定义的列表:


msgCRLMappingRecord=url_in_certificate==new_url[|url_login_DN|url_login_password]

url_in_certificate 是证书中包含旧信息的 URL,这些信息用来查找 CRL。new_url 是包含新 CRL 信息的新 URL。url_login_DNurl_login_password 是允许访问 new_url 的条目的 DN 和密码。这两个选项都是可选项,如果指定了这两个选项,将仅用于访问新的 URL。

如果 DN 和密码验证失败,将拒绝 LDAP 访问并且不再尝试其他证书。这些登录证书仅对 LDAP URL 有效。如果使用了 smmime.conf 中的 crlurllogindncrlurlloginpw,则无需在映射记录中指定登录 DN 和密码。请参见使用证书访问 LDAP 中的公共密钥、CA 证书和 CRL

仅允许使用一层映射。可以将证书中各个不同的 URL 映射到同一个新 URL,但您不能将证书 URL 分配给多个新 URL。例如,以下映射列表就是一个无效映射列表:

msgCRLMappingRecord=URL12==URL45
msgCRLMappingRecord=URL12==URL66
msgCRLMappingRecord=URL12==URL88
msgCRLMappingRecord=URL20==URL90
msgCRLMappingRecord=URL20==URL93

以下示例是正确的映射列表:

msgCRLMappingRecord=URL12==URL45
msgCRLMappingRecord=URL14==URL66
msgCRLMappingRecord=URL88==URL66
msgCRLMappingRecord=URL201==URL90
msgCRLMappingRecord=URL202==URL93

在 LDAP 目录中创建映射定义后,请使用 smime.conf 文件中的 crlmappingurl 指定查找这些映射定义的目录信息。请参见smime.conf 文件的参数

代理服务器和 CRL 检查

如果您的系统在客户端应用程序和 Messaging Server 之间使用了代理服务器,那么,尽管您已正确配置了 S/MIME Applet 来执行 CRL 检查,系统仍将阻止进行 CRL 检查。遇到此问题时,Communications Express Mail 用户会收到错误消息,警告他们有效密钥证书已撤销或其状态未知。

造成此问题的原因包括:

要解决此问题,您可以:

  1. 使用 SSL 将客户机和代理服务器之间的通信链路设置为安全链路,并将所有配置值保留为原来的值。或者,

  2. 保留通信链路不受安全保护的状态,并将 checkoverssl 设置为 0

有关更多信息,请参见使用 SSL 确保 Internet 链路的安全

使用过时 CRL

当 S/MIME applet 向 Messaging Server 发送检查证书的请求后,Messaging Server 将根据 CRL 检查证书。Messaging Server 并不是在每次检查证书时都将 CRL 下载到内存中,而是将 CRL 的副本下载到磁盘中并使用该副本进行证书检查。每个 CRL 都有一个下次更新字段,该字段指定在哪个日期后应该使用更新的 CRL 版本。下次更新日期可被视为使用 CRL 的截止日期或时间限制。超过下次更新日期的 CRL 将被视为旧的或过时的 CRL,并促使 Messaging Server 在下次检查证书时下载最新版本的 CRL。

每次 S/MIME applet 请求根据 CRL 检查证书时,Messaging Server 都将执行以下操作:

  1. 将 CRL 的当前日期与下次更新日期相比较。

  2. 如果 CRL 已过时,Messaging Server 将下载最新版本的 CRL 以替换磁盘上过时的 CRL,然后进行检查。但是,如果找不到或无法下载最新的 CRL,将使用 smime.conf 文件中的 crlusepastnextupdate 的值来确定要执行的操作。

  3. 如果 crlusepastnextupdate 被设置为 0,则不使用过时的 CRL,并且有问题的证书将处于一种待决状态。S/MIME Applet 使用 smime.conf 中的 revocationunknown 的值来确定下一步操作:

    1. 如果 revocationunknown 被设置为 ok,证书将被视为有效,并将使用专用或公共密钥对邮件进行签名或加密。

    2. 如果 revocationunknown 被设置为 revoked,证书将被视为无效,且不使用专用或公共密钥对邮件进行签名或加密,系统将显示一条弹出式错误消息,警告邮件用户无法使用密钥。

    如果 crlusepastnextupdate 被设置为 1,S/MIME Applet 将继续使用过时的 CRL,这样会使 Communications Express Mail 中的处理不会出现任何中断,但系统会向 Messaging Server 日志文件写入一条消息,警告您出现了这种情况。

这一系列事件将根据 CRL 检查证书的顺序继续发生。只要 Messaging Server 能够及时下载最新版本的 CRL,邮件处理就会根据 smime.conf 文件中的设置继续进行而不会中断。定期检查 Messaging Server 日志以查看是否存在指明正在使用过时 CRL 的重复消息。如果无法下载更新的 CRL,您需要调查无法访问此 CRL 的原因。

确定要使用的邮件发送时间

timestampdelta 参数主要用于以下目的:

  1. 用于处理需要花费很长时间才能到达目的地的邮件的情况。对于这种情况,发件人的密钥可能会被视为无效密钥,尽管事实上该密钥在发送邮件时是有效的。

  2. 用于限制对邮件发送时间的信任,因为发送时间可以伪造。

与每封邮件相关的时间有两个:


注 –

单击邮件的“发件人”字段右侧的三角形图标可以查看邮件标题的详细信息。


发送邮件时有效的证书可能在邮件到达目的地时已撤销或过期。遇到此情况时,检查证书有效性时应使用哪个时间呢?是发送时间还是收到时间?使用发送时间将验证发送邮件时证书是否有效。但如果始终使用发送时间,就会忽略一个事实:邮件可能需要很长时间才能到达目的地。在这种情况下最好使用收到的时间。

您可以使用 smime.conf 文件中的 timestampdelta 参数来选择进行 CRL 检查时所使用的时间。请将此参数设置为表示秒数的正整数。如果接收时间减去 timestampdelta 的值为发送时间前的某个时间,则使用发送时间。否则,使用收到时间。timestampdelta 的值越小,使用接收时间的频率就越高。如果未设置 timestampdelta,将始终使用接收时间。请参见表 20–3 中的 timestampdelta

访问 CRL 时出现问题

由于网络或服务器问题等各种原因,当 Messaging Server 尝试根据 CRL 检查证书时,CRL 可能会不可用。您可以使用 smime.conf 文件中的 crlaccessfail 参数来管理 Messaging Server 尝试访问 CRL 的频率,从而使 Messaging Server 可以执行其他任务,而不是一直把时间花在尝试获得对 CRL 的访问上。

使用 crlaccessfail 定义以下内容:

有关此参数的语法和示例,请参见表 20–3 中的 crlaccessfail

当证书撤销时

当公共密钥的证书与 CRL 上的任何条目都不匹配时,将使用该专用或公共密钥对传出邮件进行签名或加密。当证书与 CRL 上的某个条目匹配或证书的状态为未知时,该专用或公共密钥将被视为已撤销。默认情况下,Communications Express Mail 不使用具有已撤销证书的密钥对外发邮件进行签名或加密。如果在收件人读取邮件时签名邮件的专用密钥已撤销,收件人将收到一条警告消息,指示不应相信该签名。

如果需要,您可以使用 smime.conf 文件中的下列参数来更改所有已撤销证书的各种默认策略: