生成 CA 证书
CA = Certificate Authority 权威证书颁发机构
生成证书私钥
此步骤进行完之后会生成 ca.key 的私钥文件。
1 | openssl genrsa -aes256 -out ca.key 2048 |
生成 CSR 并签发 CA 证书
CSR = Certificate Signing Request 证书签发请求
-key ca.key引用 CA 的私钥文件,-out ca.csr生成证书请求文件(CSR)。
此步骤进行完之后会生成 ca.csr 的证书请求文件、证书本体文件 ca.crt。
1 | openssl req -new -x509 -sha256 -key ca.key -out ca.csr -config openssl.cnf |
生成服务器证书
修改配置文件
文件路径:/etc/pki/tls/openssl.cnf,在 [usr_cert] 内添加以下配置,添加证书的“使用者可选名称(SAN)”:
1 | subjectAltName = @dns_names |
生成证书私钥
此步骤进行完之后会生成 server.key 的私钥文件。
1 | openssl genrsa -aes256 -out server.key 2048 |
去除密钥口令
文件名要与上述生成的私钥文件名称一致。
- 如果不去除密钥口令,每当需要使用该证书的服务(如 nginx、httpd 等)启动时会提示输入口令。
1 | openssl rsa -in server.key -out server.key |
生成 CSR
此步骤进行完之后会生成 server.csr 的证书请求文件。
1 | openssl req -new -key server.key -out server.csr |
签发服务器证书
使用刚刚生成的 CA 证书进行签发。
1 | openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf -extensions usr_cert |
证书格式转换
pem 转 pfx
将 server.key 和 server.crt 转换成 pfx 证书格式。
1 | openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt [-CAfile ca.crt] |
pfx 转 pem
将 server.pfx 转换成 pem 格式。
只提取私钥文件
提取完后目录会出现 private.key 私钥文件。
1 | openssl pkcs12 -in server.pfx -nocerts -out private.key -nodes |
private.key 文件内容:
1 | -----BEGIN PRIVATE KEY----- |
只提取证书文件
提取完后目录会出现 public.crt 证书文件。
1 | openssl pkcs12 -in server.pfx -nokeys -out public.crt |
public.crt 文件内容:
1 | -----BEGIN CERTIFICATE----- |
同时提取私钥和证书
提取完后,私钥和证书内容会合并保存在同一个文件(all.pem)。
1 | openssl pkcs12 -in server.pfx -nodes -out all.pem |
all.pem 文件内容:
1 | Bag Attributes |