本节说明如何配置 Calendar Server 的 SSL。
本节包含以下主题:
网关需要证书才能将其公钥发送给客户机。证书包括网关的公钥、与网关证书相关的标识名、证书的序列号或颁发日期以及证书的到期时间。证书由认证机构 (Certification Authority, CA) 颁发,该机构会验证网关的身份。CA 为一个或多个用户所信任的机构,它负责颁发和管理 X.509 公钥证书以及 CARL 或证书撤销列表 (Certification Revocation List, CRL)。CA 是公钥基础结构 (Public Key Infrastructure, PKI) 的基本构建块。另一方面,PKI 是一组用于管理证书和公/私钥对(包括颁发、维护和撤销公钥证书的功能)的策略、进程、服务器平台、软件和工作站。
CA 会在所生成的每个证书和 CRL 中插入其名称,并使用私钥来对证书进行数字签名。直接或通过认证路径与 CA 建立信任关系后,就可信任由该 CA 颁发的证书。可通过比较其名称来轻松地识别该 CA 所颁发的证书。不过,可使用其公钥来确保证书的有效性。
CA 执行以下四个基本的 PKI 功能:
颁发(创建和签名)证书。
维护证书状态信息并颁发 CRL。
发布其当前(未到期)证书和 CRL。
维护到期证书的状态信息的归档。
服务器的证书和密钥对代表服务器的身份。它们存储在证书数据库中,此数据库可存放在服务器内部,也可存放在外部的可移除硬件卡(智能卡)上。实现 Calendar Server 的 SSL 需要证书数据库。证书数据库必须定义 Calendar Server 的认证机构 (CA) 和证书。本部分包含概念性信息和任务信息:
创建证书数据库之前,请先熟悉以下内容:
Mozilla 工具
本发行版包含以下 Mozilla 工具:
证书数据库工具 (certutil),用于创建和管理证书数据库。有关信息,请访问以下 Web 站点:
http://mozilla.org/projects/security/pki/nss/tools/certutil.html
请在尝试生成证书数据库之前,熟悉该工具的语法。
安全模块数据库工具 (modutil),用于显示可用安全模块的信息。有关信息,请访问以下 Web 站点:
http://mozilla.org/projects/security/pki/nss/tools/modutil.html
这些工具可从以下目录中获得:
/opt/SUNWics5/cal/lib
也可从 Web 站点下载最新版本。
库路径变量
使用 Mozilla 工具前,需正确设置 LD_LIBRARY_PATH 变量。例如:
setenv LD_LIBRARY_PATH /opt/SUNWics5/cal/lib
示例文件和目录
本章中的示例使用以下文件和目录:
/etc/opt/SUNWics5/config,包含证书数据库的目录。
定期备份证书数据库。也可在另一目录中创建证书数据库。如果这样,还必须将证书密码文件放置在同一目录中。
sslpassword.conf,包含证书数据库密码的文本文件。
此文件由 certutil 实用程序使用,而不是由 Calendar Server 使用。在以下目录中创建 sslpassword.conf:
/etc/opt/SUNWics5/config
/etc/passwd 处的文件采用熵编码生成随机数,即将该目录用于生成变化的、唯一的初始化向量,从而有助于确保从随机数生成器得到真正随机的结果。
以超级用户 (root) 身份登录或转为超级用户。
在 /etc/opt/SUNWics5/config/sslpassword.conf 中指定证书数据库密码。
例如:
# echo "password file entry" /etc/opt/SUNWics5/config/sslpassword.conf |
password file entry 的格式如下:
Internal (Software) Token: password
创建证书数据库目录。例如:
# cd /var/opt/SUNWics5 # mkdir alias |
转到 bin 目录,生成证书数据库 (cert8.db) 和密钥数据库 (key3.db)。例如:
# cd /opt/SUNWics5/cal/bin # ./certutil -N -d /etc/opt/SUNWics5/config -f /etc/opt/SUNWics5/config/sslpassword.conf |
在这一次以及其他必须运行 certutil 实用程序的时候,请完全遵照本示例,或参考 certutil 帮助页来理解语法。
例如,在本例中,如果没有同时指定 -d /文件信息时,则不要运行带 -N 选项的实用程序。
生成默认的自签名根证书授权机构。例如:
# ./certutil -S -n SampleRootCA -x -t "CTu,CTu,CTu" -s "CN=My Sample Root CA, O=sesta.com" -m 25000 -o /etc/opt/SUNWics5/config/SampleRootCA.crt -d /etc/opt/SUNWics5/config -f /etc/opt/SUNWics5/config/sslpassword.conf -z /etc/passwd |
生成主机的证书。例如:
# ./certutil -S -n SampleSSLServerCert -c SampleRootCA -t "u,u,u" -s "CN=hostname.sesta.com, O=sesta.com" -m 25001 -o /etc/opt/SUNWics5/config/SampleSSLServer.crt -d /etc/opt/SUNWics5/config -f /etc/opt/SUNWics5/config/sslpassword.conf -z /etc/passwd |
其中,hostname.sesta.com 是服务器主机名。
验证证书。例如:
# ./certutil -V -u V -n SampleRootCA -d /etc/opt/SUNWics5/config # ./certutil -V -u V -n SampleSSLServerCert -d /etc/opt/SUNWics5/config |
列出证书。例如:
# ./certutil -L -d /etc/opt/SUNWics5/config # ./certutil -L -n SampleSSLServerCert -d /etc/opt/SUNWics5/config |
使用 modutil 列出可用的安全模块 (secmod.db)。例如:
# ./modutil -list -dbdir /etc/opt/SUNWics5/config |
将 alias 文件的所有者更改为 icsuser 和 icsgroup(或将要运行 Calendar Server 的用户和组标识)。例如:
# find /etc/opt/SUNWics5/config -exec chown icsuser {}; # find /etc/opt/SUNWics5/config -exec chgrp icsgroup {}; |
自签名证书通过网关自身的私钥来进行签名。自签名证书并不安全,但是可使用它们在签名证书可用前测试需要证书的应用程序。自签名证书将其自身的证书请求而非 CA 的签名用作签名。
在通过 PKI 创建自签名证书时,共有十个通用字段,其中六个字段为必填字段,其余四个为可选字段。序列号、证书签名算法标识符、证书颁发者名称、证书有效期、公钥和主题名称为必填字段。可选字段有版本号、两个唯一标识符和扩展名。这些可选字段仅出现在版本 2 和版本 3 证书中。
必填字段“有效期”表示证书的生效时间和到期时间。NSS certutil 中提供的默认到期时间为三个月。然而,在到期时间前,证书中的有效数据会变得不可靠。X.509 CRL 机制提供其已颁发证书的状态更新以密切关注证书的到期时间。此外,CA 也将证书的到期时间强制限制为一到两年。
证书到期或其有效期结束后,需要进行续展。续展是一种行为或过程,即通过颁发新证书来延长由公钥证书所声明的数据绑定的有效期。可使用以下命令验证证书:
-V -n certname -b validity-time -u certusage [-e] [-l] [-d certdir]
以下示例说明如何使用命令来验证证书:
certutil -V -n jsmith@netscape.com -b 9803201212Z -u SR -e -l -d certdir.
“证书数据库工具”显示与以下内容类似的结果:
Certificate:'jsmith@netscape.com' is valid.
或
UID=jsmith, E=jsmith@netscape.com, CN=John Smith, O=Netscape Communications Corp., C=US : Expired certificate
或
UID=jsmith, E=jsmith@netscape.com, CN=John Smith, O=Netscape Communications Corp., C=US : Certificate not approved for this operation
以下步骤将介绍如何生成认证请求,将请求提交给公钥基础设施 (Public Key Infrastructure, PKI) Web 站点,然后导入证书。这些说明假设您要将证书数据库放置在 config 目录下。
证书数据库和密码文件必须处于同一目录中。此处显示的默认目录为 config 目录,但是,也可选择另一目录,这时必须如以下过程所示配置另一路径参数。
以超级用户 (root) 身份登录或转为超级用户。
转到 bin 目录:
# cd /opt/SUNWics5/cal/bin
基于认证机构或公钥基础设施 (PKI) Web 站点,使用 certutil 生成认证请求。例如:
# ./certutil -R -s "CN=hostname.sesta.com, OU=hostname/ SSL Web Server, O=Sesta, C=US" -p "408-555-1234" -o hostnameCert.req -g 1024 -d /etc/opt/SUNWics5/config -f /etc/opt/SUNWics5/config/sslpassword.conf -z /etc/passwd -a |
其中,"hostname.sesta.com" 为主机名。
从认证机构或公钥基础设施 (PKI) Web 站点为 SSL Web 服务器请求一个测试证书。将 hostnameCert.req 文件的内容复制并粘贴到认证请求中。
系统将通知您证书何时签名并可用。
将认证机构证书链和 SSL 服务器证书复制到文本文件中。
将认证机构证书链导入证书数据库以建立机构链。例如:
# ./certutil -A -n "GTE CyberTrust Root" -t "TCu,TCu,TCuw" -d /etc/opt/SUNWics5/config -a -i /export/wspace/Certificates/CA_Certificate_1.txt -f /etc/opt/SUNWics5/config/sslpassword.conf # ./certutil -A -n "Sesta TEST Root CA" -t "TCu,TCu,TCuw" -d /etc/opt/SUNWics5/config -a -i /export/wspace/Certificates/CA_Certificate_2.txt -f /etc/opt/SUNWics5/config/sslpassword.conf |
导入已签名的 SSL 服务器证书:
# ./certutil -A -n "hostname SSL Server Test Cert" -t "u,u,u" -d /etc/opt/SUNWics5/config -a -i /export/wspace/Certificates/SSL_Server_Certificate.txt -f /etc/opt/SUNWics5/config/sslpassword.conf |
列出证书数据库中的证书:
# ./certutil -L -d /etc/opt/SUNWics5/config
将 ics.conf 文件中的 SSL 服务器昵称配置为已签名的 SSL 服务器证书,例如:"hostname SSL Server Test Cert"。
注意:ics.conf 文件中的 service.http.calendarhostname 和 service.http.ssl.sourceurl 参数的主机名应与 SSL 证书中的主机名相匹配(如果您的系统具有多个别名)。例如:calendar.sesta.com
要在 Calendar Server 上实现 SSL,必须设置 ics.conf 文件中的特定参数。如果下表中列出的任何参数不在 ics.conf 文件中,请使用指定的值将它们添加到该文件中。由于当系统启动时(发出 start-cal 时),ics.conf 是只读的,因此只有重新启动 Calendar Server 后,这些新值才会生效。有关这些 SSL 参数的说明,参见 E.2.10 Calendar Server SSL 配置参数。
以有权更改此配置的管理员身份登录。
转至 /etc/opt/SUNWics5/cal/config 目录。
通过复制和重命名旧的 ics.conf 文件来保存该文件。
编辑下表中所示的一个或多个参数:
参数 |
值 |
---|---|
encryption.rsa.nssslactivation |
"on" |
encryption.rsa.nssslpersonalityssl |
"SampleSSLServerCert" |
encryption.rsa.nsssltoken |
"internal" |
service.http.tmpdir |
"/var/opt/SUNWics5/tmp" |
service.http.uidir.path |
"html" |
service.http.ssl.cachedir |
"." |
service.http.ssl.cachesize |
"10000" |
local.ssldbpath |
"/etc/opt/SUNWics5/config" |
service.http.ssl.port.enable |
"yes" |
service.http.ssl.port |
"443"(默认 SSL 端口) 注 – 不在 HTTP 默认端口 "80" 上。 |
service.http.securesession |
"yes"(加密整个会话) |
service.http.ssl.sourceurl |
"https://localhost:port"(提供本地主机名和 service.http.ssl.port 的值。) 开始 |
service.http.ssl.ssl3.ciphers |
"rsa_red_40_md5, rsa_rc2_40_md5, rsa_des_sha, rsa_rc4_128_md5, rsa_3des_sha" |
service.http.ssl.ssl3.sessiontimeout |
"0" |
service.http.sslusessl |
"yes" |
将此文件另存为 ics.conf。
重新启动 Calendar Server 使上述更改生效。
cal-svr-base/SUNWics5/cal/sbin/start-cal