网关需要证书才能将其公钥发送给客户机。证书包括网关的公钥、与网关证书相关的标识名、证书的序列号或颁发日期以及证书的到期时间。证书由认证机构 (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 {}; |