本部分介绍如何在目录服务器中管理 SSL 证书。
要在目录服务器上运行 SSL,您必须使用自签名证书或公钥基础结构 (Public Key Infrastructure, PKI) 解决方案。
PKI 解决方案需要使用外部证书颁发机构 (Certificate Authority, CA)。要使用 PKI 解决方案,您需要包含公钥和私钥的 CA 签名服务器证书。此证书特定于一个目录服务器。此外还需要一个包含公钥的可信 CA 证书。可信 CA 证书可确保来自 CA 的所有服务器证书都是可信的。此证书有时称为 CA 根密钥或根证书。
如果将证书用于测试目的,您可能要使用自签名的证书。但是在生产中,使用自签名证书不太安全。在生产中,应使用可信的证书颁发机构 (Certificate Authority, CA) 证书。
本部分中的过程使用 dsadm 和 dsconf 命令。有关这些命令的信息,请参见 dsadm(1M) 和 dsconf(1M) 手册页。
本部分提供了以下有关在目录服务器上配置证书的信息:
首次创建目录服务器实例时,它将包含默认的自签名证书。自签名证书是一个公钥/私钥对,其中的公钥由私钥进行签名。自签名证书的有效期为三个月。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
创建目录服务器实例时,将自动提供默认的自签名证书。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
要使用非默认设置创建自签名证书,请使用以下命令:
$ dsadm add-selfsign-cert instance-path cert-alias |
其中 cert-alias 是您提供的用于标识证书的名称。
要查看此命令的所有选项,请参见 dsadm(1M) 手册页或命令行帮助:
$ dsadm add-selfsign-cert --help |
当自签名证书过期时,请停止服务器实例并续订证书。
$ dsadm stop instance-path $ dsadm renew-selfsign-cert instance-path cert-alias |
重新启动服务器实例。
$ dsadm start instance-path |
此过程介绍如何请求和安装用于目录服务器的 CA 签名服务器证书。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
生成 CA 签名的服务器证书请求。
$ dsadm request-cert [-W cert-pwd-file] {-S DN | --name name [--org org] \ [--org-unit org-unit] [--city city] [--state state] [--country country]} \ [-o output-file] [-F format] instance-path |
例如,要为 Example 公司请求 CA 签名的服务器证书,请使用以下命令:
$ dsadm request-cert --name host1 --org Example --org-unit Marketing \ -o my_cert_request_file /local/ds |
为了完整地标识服务器,证书颁发机构可能需要此示例中显示的所有属性。有关每个属性的描述,请参见 dsadm(1M) 手册页。
使用 dsadm request-cert 请求证书时,所生成的证书请求为二进制证书请求,除非将 ASCII 指定为输出格式。如果指定 ASCII,则生成的证书请求为 PEM 格式的 PKCS #10 证书请求。PEM 是由 RFC 1421 至 1424 (http://www.ietf.org/rfc/rfc1421.txt ) 指定的保密性增强的电子邮件格式,用于以 US-ASCII 字符表示 base64 编码的证书请求。请求的内容与以下示例类似:
-----BEGIN NEW CERTIFICATE REQUEST----- MIIBrjCCARcCAQAwbjELMAkGA1UBhMCVXMxEzARBgNVBAgTCkNBElGT1JOSUExLD AqBgVBAoTI25ldHNjYXBlIGNvb11bmljYXRpb25zIGNvcnBvcmF0aWuMRwwGgYDV QQDExNtZWxsb24umV0c2NhcGUuY29tMIGfMA0GCSqGSIb3DQEBAUAA4GNADCBiQK BgCwAbskGh6SKYOgHy+UCSLnm3ok3X3u83Us7u0EfgSLR0f+K41eNqqWRftGR83e mqPLDOf0ZLTLjVGJaHJn4l1gG+JDf/n/zMyahxtV7+T8GOFFigFfuxJaxMjr2j7I vELlxQ4IfZgwqCm4qQecv3G+N9YdbjveMVXW0v4XwIDAQABAAwDQYJKoZIhvcNAQ EEBQADgYEAZyZAm8UmP9PQYwNy4Pmypk79t2nvzKbwKVb97G+MT/gw1pLRsuBoKi nMfLgKp1Q38K5Py2VGW1E47/rhm3yVQrIiwV+Z8Lcc= -----END NEW CERTIFICATE REQUEST----- |
获取证书颁发机构证书的过程取决于所使用的证书颁发机构。某些商业 CA 提供了允许您自动下载证书的 Web 站点。其他 CA 将在您请求证书后以电子邮件形式向您发送证书。
发送请求之后,您必须等待 CA 对请求做出响应,即提供您的证书。请求的响应时间会有所不同。例如,如果您的 CA 在公司内部,则 CA 可能只需一两天即可响应您的请求。如果您选择的 CA 在公司外部,则 CA 可能需要几个星期才能响应您的请求。
保存从证书颁发机构收到的证书。
请将证书备份到安全位置。如果丢失证书,您可以使用备份文件重新安装。可以在文本文件中保存证书。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----- |
此过程介绍如何安装用于目录服务器的 CA 签名服务器证书和可信 CA 证书。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
添加 CA 签名的服务器证书。
$ dsadm add-cert --ca instance-path cert-alias cert-file |
其中 cert-alias 是您提供的用于标识证书的名称,cert-file 是包含 PEM 格式 PKCS #11 证书的文本文件。
例如,要安装 CA 签名的服务器证书,可以使用与以下形式类似的命令:
$ dsadm add-cert /local/ds server-cert /local/safeplace/serv-cert-file |
证书现在已完成安装,但还不是可信证书。要信任 CA 签名的服务器证书,必须安装证书颁发机构证书。
添加可信的证书颁发机构证书。
$ dsadm add-cert --ca instance-path cert-alias cert-file |
--ca 选项表示该证书为可信的证书颁发机构证书。
例如,要安装来自证书颁发机构的可信证书,可以使用以下命令:
$ dsadm add-cert --ca /local/ds CA-cert /local/safeplace/ca-cert-file |
(可选的)验证已安装的证书。
要列出所有服务器证书并显示其有效日期和别名,请键入:
$ dsadm list-certs instance-path |
例如:
$ dsadm list-certs /local/ds1 Enter the certificate database password: Alias Valid from Expires on Self- Issued by Issued to signed? ----------- ---------- ---------- ------- ----------------- ----------------- serverCert 2000/11/10 2011/02/10 n CN=CA-Signed Cert, CN=Test Cert, 18:13 18:13 OU=CA,O=com dc=example,dc=com defaultCert 2006/05/18 2006/08/18 y CN=host1,CN=DS, Same as issuer 16:28 16:28 dc=example,dc=com 2 certificates found |
默认情况下,目录代理服务器实例包含一个名为 defaultCert 的默认服务器证书。文本 Same as issuer 表明默认证书是自签名的服务器证书。
要列出可信的 CA 证书,请键入:
$ dsadm list-certs -C instance-path |
例如:
$ dsadm list-certs -C /local/ds1 Enter the certificate database password: Alias Valid from Expires on Self- Issued by Issued to signed? ------- ---------- ---------- ------- ----------------- -------------- CA-cert 2000/11/10 2011/02/10 y CN=Trusted CA Cert, Same as issuer 18:12 18:12 OU=CA,O=com 1 certificate found |
要查看证书的详细信息(包括证书的过期日期),请键入:
$ dsadm show-cert instance-path cert-alias |
例如,要查看服务器证书,请键入:
$ dsadm show-cert /local/ds1 "Server-Cert" Enter the certificate database password: Certificate: Data: Version: 3 (0x2) Serial Number: 2 (0x2) Signature Algorithm: PKCS #1 MD5 With RSA Encryption Issuer: "CN=Server-Cert,O=Sun,C=US" Validity: Not Before: Fri Nov 10 18:12:20 2000 Not After : Thu Feb 10 18:12:20 2011 Subject: "CN=CA Server Cert,OU=ICNC,O=Sun,C=FR" Subject Public Key Info: Public Key Algorithm: PKCS #1 RSA Encryption RSA Public Key: Modulus: bd:76:fc:29:ca:06:45:df:cd:1b:f1:ce:bb:cc:3a:f7: 77:63:5a:82:69:56:5f:3d:3a:1c:02:98:72:44:36:e4: 68:8c:22:2b:f0:a2:cb:15:7a:c4:c6:44:0d:97:2d:13: b7:e3:bf:4e:be:b5:6a:df:ce:c4:c3:a4:8a:1d:fa:cf: 99:dc:4a:17:61:e0:37:2b:7f:90:cb:31:02:97:e4:30: 93:5d:91:f7:ef:b0:5a:c7:d4:de:d8:0e:b8:06:06:23: ed:5f:33:f3:f8:7e:09:c5:de:a5:32:2a:1b:6a:75:c5: 0b:e3:a5:f2:7a:df:3e:3d:93:bf:ca:1f:d9:8d:24:ed Exponent: 65537 (0x10001) Signature Algorithm: PKCS #1 MD5 With RSA Encryption Signature: 85:92:42:1e:e3:04:4d:e5:a8:79:12:7d:72:c0:bf:45: ea:c8:f8:af:f5:95:f0:f5:83:23:15:0b:02:73:82:24: 3d:de:1e:95:04:fb:b5:08:17:04:1c:9d:9c:9b:bd:c7: e6:57:6c:64:38:8b:df:a2:67:f0:39:f9:70:e9:07:1f: 33:48:ea:2c:18:1d:f0:30:d8:ca:e1:29:ec:be:a3:43: 6f:df:03:d5:43:94:8f:ec:ea:9a:02:82:99:5a:54:c9: e4:1f:8c:ae:e2:e8:3d:50:20:46:e2:c8:44:a6:32:4e: 51:48:15:d6:44:8c:e6:d2:0d:5f:77:9b:62:80:1e:30 Fingerprint (MD5): D9:FB:74:9F:C3:EC:5A:89:8F:2C:37:47:2F:1B:D8:8F Fingerprint (SHA1): 2E:CA:B8:BE:B6:A0:8C:84:0D:62:57:85:C6:73:14:DE:67:4E:09:56 Certificate Trust Flags: SSL Flags: Valid CA Trusted CA User Trusted Client CA Email Flags: User Object Signing Flags: User |
CA 签名服务器证书(公钥和私钥)过期时,可以使用此过程续订证书。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
从证书颁发机构获取已更新的 CA 签名服务器证书。
收到更新的证书时,停止服务器实例并安装该证书。
$ dsadm stop instance-path $ dsadm renew-cert instance-path cert-alias cert-file |
重新启动服务器实例。
$ dsadm start instance-path |
在某些情况下,您可能需要导出证书的公钥和私钥,以便日后可以导入该证书。例如,您可能希望其他服务器使用该证书。
此过程中的命令可用于包含通配符的证书(如 "cn=*,o=example")。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
导出证书。
$ dsadm export-cert [-o output-file] instance-path cert-alias |
例如:
$ dsadm export-cert -o /tmp/first-certificate /local/ds1 "First Certificate" $ dsadm export-cert -o /tmp/first-ca-server-certificate /local/ds1/ defaultCert Choose the PKCS#12 file password: Confirm the PKCS#12 file password: $ ls /tmp first-ca-server-certificate |
导入证书。
$ dsadm import-cert instance-path cert-file |
例如,将证书导入到服务器实例:
$ dsadm import-cert /local/ds2 /tmp/first-ca-server-certificate Enter the PKCS#12 file password: |
(可选的)如果已将证书导入服务器,请将该服务器配置为使用导入的证书。
$ dsconf set-server-prop -e -h host -p port ssl-rsa-cert-name:server-cert |
默认情况下,目录服务器通过存储的密码在内部管理 SSL 证书数据库密码。在管理证书时,用户无需键入证书密码或指定密码文件。此选项不太安全,因为只是隐藏了密码,而不会对密码进行加密。
但是,如果要对证书使用进行更多控制,则可以配置服务器,以提示用户在命令行中输入密码。在这种情况下,对于除 autostart、 backup、 disable-service、enable-service、info、 reindex、 restore 和 stop 之外的所有 dsadm 子命令,用户都必须键入证书数据库密码。证书数据库位于目录 instance-path/alias 中。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
停止服务器。
$ dsadm stop instance-path |
将密码提示标志设置为 on。
$ dsadm set-flags instance-path cert-pwd-prompt=on |
系统将要求您选择新的证书密码。
启动服务器。
$ dsadm start instance-path |
备份目录服务器实例时,将会备份目录服务器配置和证书。备份的证书存储在 archive-path/alias 目录中。
有关如何备份和恢复目录服务器的信息,请参见创建备份以用于灾难恢复。