针对由 CA 进行签名的证书生成新的专用密钥和 CSR
对于由认证中心 (CA) 进行签名的证书,服务器随附了专用密钥以及已签名的证书。您可以针对由 CA 进行签名的证书生成新的专用密钥和证书签名请求 (CSR)。您可能想针对由 CA 进行签名的证书生成新的专用密钥和 CSR,例如,在尚未建立公用密钥基础结构 (PKI) 时,情况就是如此。
关于此任务
您可以将此 CSR 发送给外部 CA 以进行签名,也可以创建专用 CA 并使用专用 CA 对 CSR 进行签名。您可以在任何计算机上创建专用 CA,前提是其操作系统支持 openSSL。
使用外部 CA 的优点是,在缺省情况下,已知公用 CA 的根证书将导入到流行的 Web 浏览器中。使用专用 CA 的优点是不依赖于外部实体提供证书,并且没有成本。
过程
- 通过打开命令行控制台并输入下列命令,生成新的专用密钥和证书签名请求 (CSR):
注: 添加 -des3 选项可以生成受密码保护的密钥,例如:openssl genrsa -out key_name.key key_strength -sha256
其中:openssl genrsa -des3 -out key_name.key key_strength -sha256 openssl req -new -key key_name.key -out csr_name.csr
csr_name
是要创建的 CSR 文件的名称。
key_name
是新密钥的名称。
key_strength
是密钥的强度,以位数计。
sha256
是签名散列算法。
例如:
这将创建证书请求。此 CSR 用作已签名证书的临时占位符,直到您在服务器设置面板中将该证书导入到密钥库为止。现在,该证书必须由 CA 进行签名,才能完成为服务器生成已签名证书的过程。您可以将此 CSR 发送给外部 CA 进行签名,也可以创建专用 CA。openssl genrsa -out privateKey.key 2048 -sha256 openssl req -new -key privateKey.key -out csr.csr
- 可选: 创建专用 CA 并对 CSR 进行签名。如果您打算创建并使用专用 CA,而不使用外部 CA,请完成以下过程。
- 通过运行下列命令,创建 CA 专用密钥和 CSR:
其中:mkdir ca openssl req -new -newkey rsa:key_strength -nodes -out path_to_csr.csr -keyout path_to_keyfile.key -sha256
key_strength
是密钥的强度,以位数计。
path_to_csr
是 CSR 的路径。
path_to_keyfile
是 CA 密钥文件的路径。
示例:openssl req -new -newkey rsa:2048 -nodes -out ca/ca.csr -keyout ca/ca.key -sha256
- 对 CA CSR 进行签名,以便为新的专用 CA 构建证书:
其中:openssl x509 -signkey path_to_keyfile.key -days number_of_days -req -in path_to_csr.csr -out path_to_ca_cert.arm -sha256
path_to_keyfile
是 CA 密钥文件的路径。
number_of_days
是此证书的有效天数。
path_to_ca_cert
是 CA 证书文件的路径。
示例:openssl x509 -signkey ca/ca.key -days 7300 -req -in ca/ca.csr -out ca/ca.arm -sha256
- 对此 CSR 进行签名。 仅当使用专用 CA 时,才需要对 CSR 进行签名。
注: 如果使用外部 CA,那么必须将此 CSR 发送给 CA 管理员以进行签名。
运行以下命令,以便对此 CSR 进行签名:
其中:openssl x509 -req -days 7300 -in path_to_csr -CA ca/ca.arm -CAkey path_to_keyfile -out cert.arm -set_serial 01 -sha256
path_to_csr
是您创建的证书签名请求文件的路径。
path_to_keyfile
是您创建的 CA 密钥文件的路径。
cert.arm
是生成的服务器证书。
ca.arm
是必须用于对此 CSR 进行签名的 CA 证书。
例如:openssl x509 -req -days 7300 -in csr.csr -CA ca/ca.arm -CAkey ca/ca.key -out cert.arm -set_serial 01 -sha256
- 通过运行下列命令,创建 CA 专用密钥和 CSR: