出于测试目的,可以使用自签名服务器证书颁发机构 (certificate authority, CA) 而不是第三方 CA。为 Apache 创建自签名服务器 CA 的步骤与创建客户机证书的证书颁发机构中介绍的为客户机证书创建 CA 的步骤非常相似。
使用以下命令创建服务器 CA。将 subject 设置为服务器的 DNS 名称。
$ pktool gencert label=apacheCA subject="CN=apachetest" \ serial=0x01
使用以下命令为服务器 CA 创建 CSR。如果可以在多个名称下访问服务器或者您希望可以直接在服务器 IP 地址下使用服务器,请使用 subjectAltNames 指令,如 OpenSSL 文档的 Subject Alternative Name(“主题备用名称”)中所述。
$ pktool gencsr label=apache subject="CN=pkg-sec.internal.example.com" \ altname="IP=192.168.1.1,DNS=pkg-sec.internal.example.com" \ format=pem outcsr=apache.csr
使用以下命令对 CSR 进行签名。将 server.crt 用于 SSLCertificateFile。
$ pktool signcsr signkey=apacheCA csr=apache.csr serial=0x02 \ outcert=server.crt issuer="CN=apachetest"
使用以下命令提取密钥。将 server.key 用于 SSLCertificateKeyFile。
$ pktool export objtype=key label=apache outformat=pem \ outfile=server.key
为确保客户机将接受此服务器密钥,请将 CA 证书 (apacheCA) 添加到客户机系统上接受的 CA 目录并重新启动 ca-certificates 服务以创建 OpenSSL 的必需链接。
使用以下命令提取 CA 证书:
$ pktool export label=apacheCA objtype=cert outformat=pem \ outfile=test_server_ca.pem
将 CA 证书复制到客户机上的 CA 证书目录:
$ cp /path-to/test_server_ca.pem /etc/certs/CA/
重新启动 CA 证书服务:
$ svcadm refresh ca-certificates
继续之前,确保已链接新 CA 证书。刷新后,ca-certificate 服务将在 /etc/openssl/certs 目录中重新生成链接。运行以下命令以检查是否已链接新 CA 证书:
$ ls -l /etc/openssl/certs | grep test_server_ca.pem lrwxrwxrwx 1 root root 40 May 1 09:51 e89d96e0.0 -> ../../certs/CA/test_server_ca.pem
由于散列值 e89d96e0.0 基于证书的主题,因此该值可能有所不同。