Sun Java System Messaging Server 6.3 管理指南

23.5.1 获得证书

无论将 SSL 用于加密还是用于验证,都需要获得服务器证书以用于 Messaging Server。此证书可使您的服务器区别于客户端和其他服务器。获得证书最有效的方式是使用 msgcert 命令(在本节后面部分作了说明)。请注意,以前的 certutil 命令仍然起作用,但它更加复杂,而且没有被国际化。有关 certutil 的更多信息,请参见23.5 配置加密和基于证书的验证http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html

本节包含以下几个部分:

23.5.1.1 管理内部模块和外部模块

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

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 模块。


注 –

下列各节将涉及控制台或 Directory Server 控制台。这里指的是版本 6 之前的 Directory Server,对于版本 6 或更高版本,图形用户界面称为 Directory Server 控制中心。有关更多信息,请参阅最新的 Directory Server 文档(《Sun Java System Directory Server Enterprise Edition 6.0 Administration Guide》)。


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

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

  2. 使用位于 msg-svr-base/sbin 中的 modutil 为安装的驱动程序安装 PKCS #11 模块。

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

23.5.1.2 创建密码文件

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

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

moduleName:password

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

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

Internal (Software) Token:netscape!

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


注意 – 注意 –

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


23.5.1.3 获得和管理证书

无论将 SSL 用于加密还是用于验证,都需要获得服务器证书以用于 Messaging Server。此证书可使您的服务器区别于客户端和其他服务器。用于获得和管理证书的主要机制是使用 msgcert。但是,如果安装了 Administration Server,您也可以使用管理控制台。

本节其余部分介绍如何使用 msgcert

23.5.1.4 关于 msgcert

msgcert 允许您生成证书请求、将证书添加到证书数据库、列出数据库中的证书,等等。要获取详细信息,请在命令行中输入以下内容:

msg-svr-base/sbin/msgcert --help

如下所示。


# ./msgcert --help

Usage: msgcert SUBCMD [GLOBAL_OPTS] [SUBCMD_OPTS] [SUBCMD_OPERANDS]
Manages the Messaging Servers Certificate Database
The accepted values for SUBCMD are:

add-cert              Adds a certificate to the certificate database
add-selfsign-cert     Creates and adds a selfsign certificate to the 
                      certificate database
export-cert           Exports a certificate and its keys from the database
generate-certDB       Creates Messaging Server Databases cert8.db key3.db 
                      secmod.db and sslPassword
import-cert           Adds a new certificate and its keys to the cert database
import-selfsign-cert  Adds a new selfsign certificate and its keys to the 
                      cert database
list-certs            Lists all certificates in the Certificate database
remove-cert           Removes a certificate from the database
renew-cert            Renews a certificate
renew-selfsign-cert   Renews a selfsign certificate
request-cert          Generates a certificate request
show-cert             Displays a certificate

The accepted value for GLOBAL_OPTS is:-?, --help
                Displays SUBCMD help

NOTE: You must stop all the TLS or SSL-enabled servers before making any 
changes to the Certificate Database.

以上显示的每个子命令都执行一个特定的证书管理功能。有关这些子命令及其功能的详细信息,可以通过输入以下命令获得:

msgcert SUBCMD –help

本节剩余部分将介绍一些常见的证书管理过程。

23.5.1.5 管理证书

本节介绍如何在 Messaging Server 中管理 SSL 证书。要在 Messaging Server 上运行 SSL,您必须使用自签名证书,也可以使用包含外部证书授权机构 (Certificate Authority, CA) 的公钥基础设施 (Public Key Infrastructure, PKI) 解决方案。要使用 PKI 解决方案,您需要包含公匙和私匙的 CA 签名服务器证书。此证书特定于一个 Messaging Server。此外还需要一个包含公钥的可信 CA 证书。可信 CA 证书可确保来自 CA 的所有服务器证书都是可信的。此证书有时称为 CA 根密钥或根证书。

配置证书数据库密码

在管理证书时,您无需键入证书密码或指定密码文件。只需将密码作为 -W 参数传递即可。示例:


echo "password22" > /tmp/certdbpwd
echo "password22" > /tmp/certdbpwd
# ./msgcert list-certs -W /tmp/certdbpwd

Procedure使用默认的自签名证书创建 Messaging Server 证书数据库

  1. 要创建 Messaging Server 证书数据库,请运行以下命令:


    msgcert generate-certDB

    此命令将从 CERT_PW_FILE 中读取证书数据库密码(默认值:提示输入密码)

  2. 您可以使用以下命令查看该证书:


    msgcert show-cert Server-Cert
    

Procedure管理自签名证书

如果将证书用于测试,则您可以使用自签名证书。在部署配置中,您可能希望使用可信的证书授权机构 (Certificate Authority, CA) 证书。您也可以使用 Directory Server 管理控制台执行该任务。

  1. 在创建证书数据库时,会自动提供一个默认的自签名证书。如果您要使用不带默认设置的自签名证书,则使用 msgcert add-selfsign-cert 命令。示例:


    msgcert add-selfsign-cert --name siroe --org comms --org-unit Messaging 
    --city SantaClara --state ca --country us MySelfSigned-Cert

    自签名证书的有效期为 3 个月。

  2. 当自签名证书过期时,请使用以下命令续订该证书:


    msgcert renew-selfsign-cert cert_alias
    

23.5.1.6 安装可信 CA 证书

使用 ./msgcert add-cert 安装证书授权机构的证书。CA 证书可验证 CA 自身的标识。服务器在验证客户端和其他服务器的过程中使用这些 CA 证书。

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

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


注 –

随 Messaging Server 自动提供的 CA 证书对客户端证书并未初始标记为信任。如果您想要信任由这些 CA 颁发的客户端证书,则需要编辑信任设置。有关说明,请参见23.5.1 获得证书


以下步骤介绍请求和安装 CA 签名服务器证书和可信 CA 证书(用于 Messaging Server)的过程。

Procedure请求 CA 签名服务器证书

您也可以使用 Directory Server 管理控制台执行该任务。

  1. 生成 CA 签名服务器证书请求。


    msgcert request-cert [-W CERT_PW_FILE] {-S DN|--name NAME [--org ORG] [--org-unit ORG-UNIT]
       [--city CITY] [--state STATE] [--country COUNTRY] } [-F FORMAT] [-o OUTPUT_FILE]

    以下是一个请求 CA 签名服务器证书的示例。它以二进制格式返回证书:


    ./msgcert request-cert --name aqua --org siroe --org-unit Messaging -o my_ca_signed_request_cert

    要以 ASCII 格式返回证书,请使用以下命令:


    ./msgcert request-cert --name aqua --org siroe --org-unit Messaging -F ascii -o my_casigned_request_cert

    证书授权机构通常需要该示例中显示的所有属性,以便完整地标识服务器。要查看每个属性的说明,请输入 ./msgcert request-cert --help。使用 msgcert request-cert 请求证书时,得到的证书请求是二进制证书请求,除非您指定输出格式为 ASCII。如果指定 ASCII,得到的证书请求是 PEM 格式的 PKCS #10 证书请求。PEM 由是 RFC 1421 至 1424 指定的保密性增强的电子邮件格式,用于以 US-ASCII 字符表示 base64 编码的证书请求。该请求的内容与以下示例类似:


    -----BEGIN NEW CERTIFICATE REQUEST-----
    MIIBdTCB3wIBADA2MRIwEAYDVQQLEwlNZXNzYWdpbmcxDjAMBgNVBAoTBXNpcm9l
    MRAwDgYDVQQDEwdhcXVhdGljMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDt
    KEh5Fnj/h9GEu18Da6DkJpcNShkwxanjnKs2883ZoUV5Sp4pN7U6Vfbh0414WXZh
    D26m3t81q9b9h47Klkf0pW1X3BB6LOjGOHSt2VoNBI8n3hJ6XiN2zYbrlLTgdKuo
    y0YrSG/kHFnqKghikag9O/Ox+cwD+mpjl2QnsPZgswIDAQABoAAwDQYJKoZIhvcN
    AQEEBQADgYEArqgWQIwNZDC2d3EZawI23Wj9o6Pyvu9J1rkb+NYgIEnNp9jugxqX
    F326N0ABLdHXXNX/2ZvC5TKOgS4RidTBM89N9xJvokmvRGfc+1x80uxy474YdNlZ
    s+nP8AYo9dW9mrLOammozx9HLPSVYNFp4FxekgV2n8QG7WC5rkN5bCE=
    -----END NEW CERTIFICATE REQUEST-----
  2. 按照程序将证书请求传送给证书授权机构。

    获得证书授权机构证书的过程取决于所使用的证书授权机构。一些商业 CA 提供了允许您自动下载证书的 Web 站点。其他 CA 将在您请求证书后以电子邮件形式向您发送证书。

    发送请求之后,您必须等待 CA 对请求做出响应,即提供您的证书。请求的响应时间各不相同。例如,如果您的 CA 在公司内部,则 CA 可能只需一两天即可响应您的请求。如果您选择的 CA 在公司外部,则 CA 可能需要几个星期才能响应您的请求。

  3. 保存从证书授权机构收到的证书。

    您应该将证书备份在安全的地方。如果您丢失了证书,则可以使用备份文件重新安装它们。您可以将证书保存在文本文件中。PEM 格式的 PKCS #11 证书与以下示例类似。


    -----BEGIN CERTIFICATE-----
    MIICjCCAZugAwIBAgICCEEwDQYJKoZIhKqvcNAQFBQAwfDELMAkGA1UEBhMCVVMx
    IzAhBgNVBAoGlBhbG9a2FWaWxsZGwSBXaWRnZXRzLCBJbmMuMR0wGwYDVQQLExRX
    aWRnZXQgTW3FrZXJzICdSJyBVczEpMCcGAx1UEAxgVGVzdCBUXN0IFRlc3QgVGVz
    dCBUZXN0IFlc3QgQ0EswHhcNOTgwMzEyMDIzMzUWhcNOTgwMzI2MDIzMpzU3WjBP
    MQswCYDDVQQGEwJVUzEoMCYGA1UEChMfTmV0c2NhcGUgRGlyZN0b3J5VIFB1Ymxp
    Y2F0aW9uczEWMB4QGA1UEAxMNZHVgh49dq2tLNvbjTBaMA0GCSqGSIb3DQEBAQUA
    A0kAMEYkCQCksMR/aLGdfp4m0OiGgijG5KgOsyRNvwGYW7kfW+8mmijDtZaRjYNj
    jcgpF3VnlbxbclX9LVjjNLC5737XZdAgEDozYwpNDARBglghkgBhvhCEAQEEBAMC
    APAwHkwYDVR0jBBgwFAU67URjwCaGqZHUpSpdLxlzwJKiMwDQYJKoZIhQvcNAQEF
    BQADgYEAJ+BfVem3vBOPBveNdLGfjlb9hucgmaMcQa9FA/db8qimKT/ue9UGOJqL
    bwbMKBBopsDn56p2yV3PLIsBgrcuSoBCuFFnxBnqSiTS7YiYgCWqWaUA0ExJFmD6
    6hBLseqkSWulk+hXHN7L/NrViO+7zNtKcaZLlFPf7d7j2MgX4Bo=
    -----END CERTIFICATE-----

Procedure添加 CA 签名服务器证书和可信 CA 证书

您也可以使用 Directory Server 管理控制台执行该任务。

  1. 使用以下命令添加 CA 签名服务器证书:


    msgcert add-cert cert_alias cert_file
    

    其中 cert_alias 是您提供的用于标识证书的名称,cert_file 是包含 PEM 格式的 PKCS #11 证书的文本文件。

    例如,要安装 CA 签名服务器证书,可以使用类似以下形式的命令:


    msgcert add-cert /my_cert/server-cert-file

    现在证书已经安装,但还不是可信的。要信任 CA 签名的服务器证书,您必须安装证书授权机构证书。

  2. 使用以下命令添加可信证书授权机构证书:


    msgcert add-cert -C cert_alias cert_file
    

    -C 选项表示证书是可信证书授权机构证书。

    例如,要安装来自证书授权机构的可信证书,可以使用以下命令:


    msgcert add-cert -C CA-cert /my_cert/ca-cert-file
  3. 可以选择使用以下命令验证安装的证书:

    列出所有服务器证书,并显示别名和有效日期等信息:


    msgcert list-certs

    在使用 ./msgcert generate-CertDB 生成证书时,Messaging Server 将具有一个名为 Server-Cert 的默认证书。文本 "Same as issuer" 表示默认证书是自签名的服务器证书。例如:


    # ./msgcert list-certs
    Enter the certificate database password:
    Alias          Valid from       Expires on       Self-   Issued by             Issued to
                                                     signed
    ------------   ----------------  --------------- ------  --------------------- -------------------------  --------------
    SelfSignedCrt 2006/07/28 12:58  2006/10/28 12:58   y     CN=SFO,L=SC,ST=ca,C=us  Same as issuer
    Server-Cert   2006/07/28 07:47  2006/10/28 07:47   y     CN=perseids             Same as issuer
    2 certificates found

    列出可信的 CA 证书:


    msgcert list-certs -C

    查看证书的详细信息(包括证书过期日期):


    msgcert show-cert cert_alias
    

    例如,要显示一个自签名证书:


    # ./msgcert show-cert MySelfSigned-Cert
    Enter the certificate database password:
    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number:
                00:83:35:37:94
            Signature Algorithm: PKCS #1 MD5 With RSA Encryption
            Issuer:
                "CN=siroe,O=comms,OU=Messaging,L=SantaClara,ST=ca,C=us"
            Validity:
                Not Before: Fri Jul 28 19:58:31 2006
                Not After : Sat Oct 28 19:58:31 2006
            Subject:
                "CN=siroe,O=comms,OU=Messaging,L=SantaClara,ST=ca,C=us"
            Subject Public Key Info:
                Public Key Algorithm: PKCS #1 RSA Encryption
                RSA Public Key:
                    Modulus:
                        aa:9d:3d:23:b2:59:39:f3:77:c8:69:7f:b0:d1:ac:d2:
                        4e:81:c8:51:0f:27:6f:a1:21:4b:a9:27:46:d7:0f:b4:
                        c8:44:86:32:5e:4f:2f:1c:2f:a9:b8:a3:49:b5:b8:ab:
                        51:a8:a5:ba:1c:e8:90:7d:46:67:f9:a7:44:c5:1d:24:
                        e6:bd:e8:8f:07:b4:5a:68:41:b1:19:f2:ea:98:ba:25:
                        55:b8:ba:9c:af:bb:43:c3:c0:8f:14:a7:4c:2b:50:b4:
                        ac:df:b5:cd:68:de:a6:14:9d:68:77:d3:8b:7f:de:c0:
                        5d:35:d7:55:8d:b5:c3:14:2a:60:a9:bf:de:96:90:a9
                    Exponent: 65537 (0x10001)
        Signature Algorithm: PKCS #1 MD5 With RSA Encryption
        Signature:
            15:86:f1:cc:85:c9:08:0f:ff:d3:56:d8:e2:c8:ea:3c:
            8e:45:36:be:8b:b0:7d:2f:e9:cd:e3:b4:ad:8c:70:59:
            c8:a5:14:da:9c:fa:7f:70:86:64:34:0b:21:ae:c4:28:
            d2:f5:94:5c:a6:78:0f:d9:fd:fc:c5:5e:37:49:25:a9:
            bc:12:59:cb:fb:4e:e9:d4:8a:8d:3d:41:12:ae:f1:7f:
            8d:d3:10:ac:fb:33:51:5d:0c:1b:dc:23:5f:95:d5:6d:
            c6:1d:e5:ed:13:8b:16:41:89:5b:4d:de:c0:c7:56:a2:
            48:82:38:32:5a:99:d5:21:20:c5:0d:5c:ea:0c:84:aa
        Fingerprint (MD5):
            EF:76:A3:6C:09:4E:BC:6B:87:76:A3:35:70:1F:B2:C4
        Fingerprint (SHA1):
            BB:1C:20:4B:79:3A:F1:49:F0:83:FB:CC:9C:56:10:D3:06:97:AA:07
    
        Certificate Trust Flags:
            SSL Flags:
                Valid CA
                Trusted CA
                User
                Trusted Client CA
            Email Flags:
                User
            Object Signing Flags:
                User

Procedure续订过期的 CA 签名服务器证书

当 CA 签名服务器证书(公匙和私匙)过期时,您可以通过以下步骤续订。您也可以使用 Directory Server 管理控制台执行该任务。

  1. 从证书授权机构获得更新的 CA 签名服务器证书。

  2. 接收到更新证书后,安装该证书。


    msgcert renew-cert cert_alias cert_file
    

Procedure导出和导入 CA 签名服务器证书

在某些情况下,您可能需要导出证书,以便以后可以导入该证书(例如将其导入另一个主机)。您也可以使用 Directory Server 管理控制台执行该任务。

  1. 导出证书。


    msgcert export-cert [-o OUTPUT_FILE] CERT_ALIAS
    

    例如:


    $ ./msgcert export-cert -o /tmp/first-certificate "First Certificate"
    $./msgcert export-cert -o /tmp/first-server-certificate Server-Cert
    Choose the PKCS#12 file password:
    Confirm the PKCS#12 file password:
    $ls /tmp
    first-server-certificate
    /tmp/first-certificate
  2. 导入证书。


    $ msgcert import-cert  CERT_FILE
    

    例如,导入证书


    $ msgcert import-cert /tmp/first-server-certificate
    Enter the PKCS#12 file password:
    $