使用 OpenSSL 生成自签名证书

所有的服务端和客户端证书一般情况下都需要向权威 CA 证书机构去申请,以保障能够被不同的操作系统和浏览器信任,CA 机构一般会收取一定的证书费用。如果您当前只是需要一本 HTTPS 证书进行测试使用,或者在企业内部使用,也可以自行通过 OpenSSL 颁发自签名证书。参考步骤如下:

步骤一:生成根证书

1. 通过以下命令创建根证书私钥,这将生成一个2048位的私钥,并将其保存到 .key 文件中。
openssl genrsa -out root.key 2048
2. 根据根证书私钥,生成证书签名请求文件(CSR)。
openssl req -new -key root.key -out root.csr
在生成 CSR 的过程中,需要提供组织名、公共名称等信息,可以根据实际使用情况填写。
3. 执行以下命令,创建根证书。
openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650
即可得到一个有效期为10年的根证书 server.crt,后续可以用该根证书自行签发所需要的服务端证书和客户端证书。

步骤二:签发证书

以签发一本服务端证书为例,您可以通过 步骤一 生成的根证书,开始为您自签发证书:
1. 生成服务端证书的私钥。
openssl genrsa -out server.key 2048
2. 根据服务端证书私钥,生成证书签名请求文件(CSR)。
openssl req -new -out server.csr -key server.key
在生成 CSR 的过程中,与根证书一样,需要提供组织名、公共名称等信息,可以根据实际使用情况填写。
3. 生成服务端公钥证书。
openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650

通过上述三个步骤,您将获得有效期为10年的自签名服务端证书 server.crt 和 server.key。您可以重复这些步骤,使用同一根证书继续生成其他所需的服务端证书或客户端证书。