之前公司使用的证书是 [[Digicert]] 发行的,但是在开发环境和测试环境不想使用 Digicert 发行的证书,证书发行太贵,所以想着自行签名一个证书,本地测试使用。所以本文主要是介绍

  • 生成根证书生成
  • 中间证书(Intermediate CA)生成
  • 自签名证书
  • 以及生成 PFX 格式

生成根 CA 证书

可以使用 OpenSSL 命令来生成根 CA 私钥和签名证书

生成根私钥文件

openssl genrsa -out rootCA.key 2048

生成根证书

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.crt -subj "/C=CN/ST=YourState/L=YourCity/O=YourOrganization/OU=YourUnit/CN=RootCA"

执行命令的过程中需要输入一些信息,包括国家,城市,地区,组织名称等。

生成中间证书

创建中间 CA 私钥和证书请求文件(CSR)

openssl genpkey -algorithm RSA -out intermediate.key
openssl req -new -key intermediate.key -out intermediate.csr

使用根 CA 签署中间 CA 证书

openssl x509 -req -in intermediate.csr -CA root.crt -CAkey root.key -CAcreateserial -out intermediate.crt -days 3650

生成自签名证书

创建服务器私钥和证书请求文件

openssl genpkey -algorithm RSA -out server.key
openssl req -new -key server.key -out server.csr

使用中间 CA 来签署服务器证书请求

openssl x509 -req -in server.csr -CA intermediate.crt -CAkey intermediate.key -CAcreateserial -out server.crt -days 3650

生成 PFX

使用 OpenSSL 将服务器的私钥、服务器证书、中间 CA 证书及根 CA 证书合并为一个 PFX 文件。

openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile intermediate.crt -certfile root.crt