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

配置加密和基于证书的验证

本节包含以下小节:

Messaging Server 使用传输层安全性 (Transport Layer Security, TLS) 协议(或称为安全套接字层 [Secure Sockets Layer, SSL] 协议)来进行加密通信以及客户端和服务器的基于证书的验证。Messaging Server 支持 SSL 版本 3.0 和 3.1。TLS 与 SSL 完全兼容并包含所有必需的 SSL 功能。

有关 SSL 的背景信息,请参见 "Introduction to SSL"(Managing Servers with iPlanet Console 的附录)。SSL 基于公共密钥密码学的概念,如 "Introduction to Public-Key Cryptography"(Managing Servers with iPlanet Console 的附录)所述。

如果对 Messaging Server 及其客户机之间以及服务器和其他服务器之间的邮件传送进行加密,则几乎没有机会窃听通信。如果正在连接的客户机已经过验证,则盗窃信息者几乎没有机会冒充(欺骗)这些客户机。

SSL 作为 IMAP4、HTTP、POP3 和 SMTP 应用程序层下面的协议层发挥作用。SMTP 和 SMTP/SSL 使用同一端口;HTTP 和 HTTP/SSL 要求使用不同的端口;IMAP 和 IMAP/SSL 以及 POP 和 POP/SSL 可以使用同一端口,也可以使用不同的端口。SSL 在传出和传入邮件的邮件通信的特定阶段发挥作用,如图 19–1 所示。

图 19–1 与 Messaging Server 的加密通信

此图形描述了加密的传出和传入邮件。

SSL 提供了逐个加密,但是不能在每个中间服务器上都加密邮件。


注 –

要能够对传出邮件进行加密,必须修改通道定义以使其包含 tls 通道关键字,例如 maytlsmusttls 等。有关更多信息,请参见传输层安全性手册。


请记住,设置一个 SSL 连接时的附加系统开销可能给服务器带来性能负担。设计邮件服务安装以及分析性能时,您可能需要针对服务器容量来平衡安全需要。


注 –

因为所有 Sun Java System 服务器都支持 SSL,并且在许多服务器上通过控制台来启用和配置 SSL 的界面几乎都相同,所以在 Managing Servers with iPlanet Console 的 SSL 一章中对本节中所述的若干任务进行了更完整地说明。对于那些任务,本章仅给出摘要信息。


通过管理控制台获得证书

无论将 SSL 用于加密还是用于验证,都需要获得服务器证书以用于 Messaging Server。此证书可使您的服务器区别于客户机和其他服务器。如果要通过管理控制台获得证书,请按本节中的步骤执行操作。如果要在命令行模式中创建自签名证书,请参见创建自签名证书

管理内部模块和外部模块的步骤

服务器证书建立了密钥对的拥有权和有效性,编号则用于加密和解密数据。服务器的证书和密钥对代表了服务器的标识。证书和密钥对都存储在证书数据库中,此数据库可以内置于服务器中或位于外部的可移动硬件插卡(智能卡)上。

Sun Java System 服务器使用遵循公共密钥密码学系统 (Public-Key Cryptography System, PKCS) #11 API 的模块来访问密钥和证书数据库。通常可以从给定硬件设备的供应商那里获得此设备的 PKCS #11 模块,并且必须将此模块安装到 Messaging Server 之后,Messaging Server 才能使用此设备。预先安装的“Netscape 内部 PKCS # 11 模块”支持单个内部软件标记(使用服务器的内部证书数据库)。

对证书设置服务器包括为证书及其密钥创建数据库以及安装 PKCS #11 模块。如果未使用外部硬件标记,则请在服务器中创建内部数据库并使用作为 Messaging Server 一部分的此内部默认模块。如果使用了外部标记,则请连接硬件智能卡阅读器并安装其 PKCS #11 模块。

您可以通过控制台管理 PKCS #11 模块,无论此模块是内部模块还是外部模块。要安装 PKCS #11 模块,请执行以下操作:

  1. 将硬件插卡阅读器连接到 Messaging Server 主机计算机并安装驱动程序。

  2. 使用控制台中的“PKCS #11 管理”界面为已安装的驱动程序安装 PKCS #11 模块。

(有关更完整的说明,请参见 Managing Servers with iPlanet Console 中有关 SSL 的章节。)

安装硬件加密加速器。如果将 SSL 用于加密,则安装硬件加密加速器可能会改进服务器加密和解密邮件时的性能。加密加速器通常由永久地安装在服务器计算机中的硬件板和软件驱动程序组成。Messaging Server 支持遵循 PKCS #11 API 的加速器模块。(它们是基本的硬件标记,并不存储自己的密钥;而是使用内部数据库来存储。)首次安装由生产商指定的硬件和驱动程序时即安装了加速器,然后通过安装 PKCS #11 模块完成加速器的安装(同时使用硬件证书标记)。

Procedure请求服务器证书的步骤

在控制台中打开服务器并运行“证书设置向导”可以请求服务器证书。您可以从“控制台”菜单或从“Messaging Server 加密”选项卡访问此向导。使用此向导可以执行以下任务:

步骤
  1. 生成证书请求。

  2. 通过电子邮件将请求发送到要颁发证书的证书授权机构 (CA)。

    来自 CA 的电子邮件响应到达后,将此电子邮件保存为文本文件并使用“证书设置向导”安装此文件。

    (有关更完整的说明,请参见 Managing Servers with iPlanet Console 中有关 SSL 的章节。)

Procedure安装证书的步骤

安装是一个与请求不同的过程。来自 CA 的响应您的证书请求的电子邮件到达并将其保存为文本文件后,请再次运行“证书设置向导”以安装作为证书的文件:

步骤
  1. 指定您已经获得的要安装的证书。

  2. 系统提示将证书的文本粘贴到字段中时,执行此操作。

  3. 将证书昵称从 server-cert 更改为 Server-Cert

    如果您不想更改证书昵称,则可以通过设置 configutil 参数 encryption.rsa.nssslpersonalityssl 来更改系统所需的证书昵称的形式。

    (有关更完整的说明,请参见 Managing Servers with iPlanet Console 中有关 SSL 的章节。)


    注 –

    这也是安装 CA 证书(下面将介绍)应遵循的过程,服务器将使用此证书确定是否相信客户机所递交的证书。


安装信任的 CA 证书的步骤

还要使用“证书设置向导”安装证书授权机构的证书。CA 证书可验证 CA 自身的标识。您的服务器在验证客户机和其他服务器的过程中使用这些 CA 证书。

例如,如果除了基于密码的验证之外,您还将您的企业设置为基于证书的客户端验证(请参见第 157 页中的“设置基于证书的登录”),则需要安装所有 CA(可以信任这些 CA 颁发将在客户端显示的证书)的 CA 证书。这些 CA 对于您的组织可能是内部 CA 也可能是外部 CA,代表了商业机构或政府机构或其他企业。(有关将 CA 证书用于验证的详细信息,请参见 Managing Servers with iPlanet Console 中的 Introduction to Public-Key Cryptography。)

安装后,Messaging Server 初始包含了若干商业 CA 的 CA 证书。如果您需要添加其他商业 CA 或者如果您的企业正在制定(使用 Sun Java System Certificate Server)自己的 CA 以在内部使用,则需要获得并安装其他 CA 证书。


注 –

随 Messaging Server 自动提供的 CA 证书对客户机证书并未初始标记为信任。如果您想要信任由这些 CA 颁发的客户机证书,则需要编辑信任设置。有关说明,请参见第 153 页中的“管理证书和信任的 CA”。


要请求并安装新的 CA 证书,您需要执行以下操作:

Procedure请求和安装新的 CA 证书

步骤
  1. 与证书授权机构(可通过 Web 或电子邮件)联系并下载该机构的 CA 证书。

  2. 将已接收的证书文本保存为文本文件。

  3. 使用“证书设置向导”(如前面小节所述)安装此证书。

    有关更完整的说明,请参见 Managing Servers with iPlanet Console 中有关 SSL 的章节。

管理证书和信任的 CA

您的服务器可以将信任的 CA 的任何编号的证书用于验证客户机。

通过在控制台中打开您的服务器并在“控制台”菜单中选择“证书管理命令”,您可以查看、编辑 Messaging Server 中所安装的证书的信任设置或删除任何证书。有关说明,请参见 Managing Servers with iPlanet Console 中有关 SSL 的章节。

创建密码文件

在所有 Sun Java System 服务器上,当使用“证书设置向导”请求证书时,向导将创建一个密钥对,并将其存储在内部模块的数据库中或外部数据库(在智能卡上)中。然后此向导将提示您提供密码,此密码用于加密专用密钥。仅此相同密码以后才可以用于解密密钥。此向导不保留密码也不在任何位置存储此密码。

在大多数为其启用了 SSL 的 Sun Java System 服务器上,在启动时系统都提示管理员提供解密密钥对所需的密码。但是,在 Messaging Server 上,为了缓解必须多次(至少在三个服务器进程中需要)输入密码带来的不便,并方便无人看管的服务器重新启动,可以从密码文件读取密码。

此密码文件的名称为 sslpassword.conf,并位于 msg_svr_base/config/ 目录中。文件中的条目是具有以下格式的单独行

moduleName:password

其中 moduleName 是要使用的内部或外部 PKCS #11 模块的名称,password 则是解密此模块的密钥对的密码。此密码以明(不加密的)文存储。

Messaging Server 提供了默认版本的密码文件,具有以下单个条目(适用于内部模块和默认密码):

Internal (Software) Token:netscape!

如果安装内部认证时指定的不是默认密码,则需要编辑密码文件的上述行以反映您指定的密码。如果安装外部模块,则需要将一个新的行添加到文件中,该行包含模块名称和您为此模块指定的密码。


注意 – 注意 –

因为系统未在服务器启动时提示管理员提供模块密码,所以确保管理员控制对服务器的正常访问以及服务器主机及其备份的正常物理安全性是极为重要的。


创建自签名证书

如果要在命令行模式中创建自签名证书,请按照本节中的说明执行操作。要使用证书向导创建证书,请参见通过管理控制台获得证书

Procedure创建自签名证书

步骤
  1. 以超级用户身份登录或成为超级用户 (root)。

  2. /opt/SUNWmsgsr/config/sslpassword 中为 certutil 指定证书数据库密码。例如:


    # echo "password" > /opt/SUNWmsgsr/config/sslpassword

    其中 password 是您指定的密码。

  3. 移动到 sbin 目录并生成证书数据库 (cert8.db) 和密钥数据库 (key3.db)。例如:


    # cd /opt/SUNWmsgsr/sbin
    # ./certutil -N -d /opt/SUNWmsgsr/config -f /opt/SUNWmsgsr/config/sslpassword
  4. 生成默认的自签名根证书授权机构证书。示例:


    # ./certutil -S -n SampleRootCA -x -t "CTu,CTu,CTu"
    -s "CN=My Sample Root CA, O=sesta.com" -m 25000
    -o /opt/SUNWmsgsr/config/SampleRootCA.crt
    -d /opt/SUNWmsgsr/config
    -f /opt/SUNWmsgsr/config/sslpassword   -z /etc/passwd
  5. 为主机生成证书。例如:


    ../certutil -S -n Server-Cert -c SampleRootCA -t "u,u,u"
    -s "CN=hostname.sesta.com, o=sesta.com" -m 25001
    -o /opt/SUNWmsgsr/config/SampleSSLServer.crt
    -d /opt/SUNWmsgsr/config -f /opt/SUNWmsgsr/config/sslpassword
    -z /etc/passwd

    其中 hostname.sesta.com 是服务器主机名。

  6. 验证证书。例如:


    # ./certutil -V -u V -n  SampleRootCA -d /opt/SUNWmsgsr/config
    # ./certutil -V -u V -n  Server-Cert -d /opt/SUNWmsgsr/config
  7. 列出证书。例如:


    # ./certutil -L -d /opt/SUNWmsgsr/config
    # ./certutil -L -n Server-Cert -d /opt/SUNWmsgsr/config
  8. 使用 modutil 列出可用的安全模块 (secmod.db)。例如:


    # ./modutil -list -dbdir /opt/SUNWmsgsr/config
  9. 将证书数据库文件的拥有者更改为邮件服务器用户和组,如示例中所示。


    chown mailsrv:mail /opt/SUNWmsgsr/config/cert8.db
    chown mailsrv:mail /opt/SUNWmsgsr/config/key3.db
    
  10. 重新启动邮件服务以启用 SSL。


    注 –

    以前,证书和密钥文件只是位于 Messaging Server 配置目录中。现在,可以使用 local.ssldbpath(指定证书和密钥文件的位置)和 local.ssldbprefix(指定证书和密钥文件的前缀)来指定这些文件的位置。)


启用 SSL 并选择加密算法的步骤

您可以使用控制台启用 SSL 并选择 Messaging Server 可以在其与客户机的加密通信中使用的加密算法集。

关于加密算法

加密算法是用于在加密进程中加密和解密数据的算法。某些加密算法比其他加密算法强大,这意味着经这些算法保密的邮件更难被未经授权的用户译出。

加密算法通过将密钥(一个长编号)应用到数据中来对数据进行操作。通常,加密过程中加密算法使用的密钥越长,没有正确的解秘密钥来解密数据则越难。

客户机用 Messaging Server 启动 SSL 连接时,客户机会让服务器了解客户机会将何种加密算法和密钥长度用于加密。在所有加密通信中,双方必须使用同一加密算法。因为有很多通用的加密算法和密钥组合,所以,服务器应当能够灵活地支持加密。Messaging Server 可支持至多 6 种加密算法和密钥长度的组合。

表 19–2 列出了 Messaging Server 支持的可与 SSL 3.0 配合使用的加密算法。有关此表中汇总的信息,可在 Managing Servers with iPlanet Console 中的 Introduction to SSL 一章中获得的更详细的介绍。

表 19–2 适用于 Messaging Server 的 SSL 加密算法

加密算法 

说明 

带有 128 位加密和 MD5 邮件验证的 RC4 

最快的加密算法(通过 RSA 实现)以及强度很高的加密算法和加密密钥的组合。 

带有 168 位加密和 SHA 邮件验证的三重 DES 

一种较慢的加密算法(美国政府标准),但却是最强大的加密算法和加密密钥的组合。 

带有 56 位加密和 SHA 邮件验证的 DES 

较慢的加密算法(美国政府标准)以及普通强度的加密算法和加密密钥组合。 

带有 40 位加密和 MD5 邮件验证的 RC4 

最快的加密算法(通过 RSA 实现)和较低强度的加密算法和加密密钥组合。 

带有 40 位加密和 MD5 邮件验证的 RC2 

较慢的加密算法(通过 RSA 实现)和较低强度的加密算法和加密密钥组合。 

无加密,只有 MD5 邮件验证 

无加密;仅使用用于验证的邮件摘要。 

除非您具备不使用某个特定加密算法的令人信服的理由,否则应当支持所有加密算法。但是,请注意出口法律限制在某些国家/地区使用某些加密算法。同时,在美国出口控制法放宽之前,所生产的某些客户机软件不能使用较高强度的加密。请注意,虽然 40 位加密算法可以阻止偶尔窃听者,但这些算法并不安全,因此将不会阻止蓄意攻击。

要启用 SSL 并选择加密算法,请遵循以下命令行步骤:

要启用或禁用 SSL:

configutil -onsserversecurity -v [ on | off ]

要启用或禁用 RSA 加密算法:

configutil -oencryption.rsa.nssslactivation -v [ on | off ]

要指定一个标记:

configutil -o encryption.rsa.nsssltoken -v tokenname

要指定一个证书:

configutil -o encryption.rsa.nssslpersonalityssl -v certname

请注意,如果启用 RSA 加密算法,还必须指定一个标记和一个证书。

要选择加密算法首选项:

configutil -oencryption.nsssl3ciphers -v cipherlist

其中 cipherlist 是以逗号分隔的加密算法列表。


注 –

要能够对传出邮件进行 SSL 加密,则必须修改通道定义以使其包含 tls 通道关键字,例如 maytlsmusttls 等。有关更多信息,请参见传输层安全性手册。


设置基于证书的登录的步骤

除了基于密码的验证之外,Sun Java System 服务器还支持通过检查用户的数字证书进行的验证。在基于证书的验证中,客户端建立与服务器之间的 SSL 会话并将用户的证书提交给服务器。然后,服务器将鉴定提交的证书是否真实。如果证书有效,则认为用户经过验证。

要将 Messaging Server 设置为基于证书登录,请执行以下操作:

Procedure设置基于证书的登录的步骤

步骤
  1. 为您的服务器获取服务器证书。(有关详细信息,请参见通过管理控制台获得证书

  2. 运行“证书设置向导”以安装所有信任的证书授权机构的证书,这些证书授权机构将向服务器要验证的用户颁发证书。(有关详细信息,请参见安装信任的 CA 证书的步骤

    请注意,只要服务器的数据库中至少有一个信任的 CA,服务器就会要求每个连接的客户端提供客户端证书。

  3. 打开 SSL。(有关详细信息,请参见启用 SSL 并选择加密算法的步骤

  4. (可选)编辑服务器的 certmap.conf 文件以便服务器根据提交的证书中的信息来搜索相应的 LDAP 用户目录。

    如果用户的证书中的电子邮件地址与用户的目录条目中的电子邮件地址相匹配,则不必编辑 certmap.conf 文件,并且无需针对用户条目中的证书优化搜索或验证已提交的证书。

    有关 certmap.conf 的格式和可以进行的更改的详细信息,请参见 Managing Servers with iPlanet Console 中的 SSL 一章。

    执行这些步骤后,当客户端建立一个 SSL 会话以便用户可以登录到 IMAP 或 HTTP 时,Messaging Server 会要求客户端提供用户证书。如果客户机所提交的证书由服务器建立为信任的 CA 颁发,并且如果证书中的标识与用户目录中的一项相匹配,则用户经过验证并被授予访问权限(取决于管理该用户的访问控制规则)。

    无需禁用基于密码的登录即可启用基于证书的登录。如果允许基于密码的登录(此为默认状态),并且您已经执行了本节中说明的任务,则同时支持基于密码的和基于证书的登录。在这种情况下,如果客户机建立 SSL 会话并提供证书,则使用基于证书的登录。如果客户机未使用 SSL 或未提供证书,则服务器会要求提供密码。

如何使用 SMTP 代理服务器优化 SSL 性能

由于 SMTP 代理服务器在 SMTP 协议中添加了附加等待时间,大多数站点不应使用 SMTP 代理服务器。但是,对于大量使用 SSL 以保护 SMTP 连接的大规模站点,它可能希望通过对服务器上的所有协议均执行全部 SSL 操作来最大化在 SSL 加速器硬件上的投资,这些操作即 SSL 和代理服务器。邮件队列位于独立的 MTA 计算机上时,SMTP 代理服务器允许前端代理服务器处理 SSL。可以单独配置和购买对每个任务优化硬件的此方法。

有关如何安装 SMTP 代理服务器的说明,请参见启用 POP Before SMTP