技巧杂烩

OpenSSL 自签证书

使用 OpenSSL 生成和签发自签名的根证书、服务端证书和客户端证书,步骤涵盖密钥生成、证书请求创建和证书签发的完整流程。

OpenSSL

OpenSSL 自签证书

环境准备

请确认你的操作系统已安装 OpenSSL

openssl version

生成 Root CA(根证书)

生成 CA 私钥

使用 secp384r1 曲线生成 Root CA 的私钥:

openssl ecparam -name secp384r1 -genkey -noout -out rootCA.key

 • ecparam 指定椭圆曲线密钥相关参数

 • name secp384r1 选择椭圆曲线算法

 • genkey 表示生成密钥

 • noout 表示不输出参数

 • out rootCA.key 指定私钥文件名

生成 CA 证书(自签)

创建并自签发 CA 证书:

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.crt -subj "/CN=MyECCRootCA"

 • x509 表示输出 X.509 格式自签证书

 • days 3650 设置有效期 10 年

 • subj 证书主题可根据实际情况自定义

你将获得 rootCA.key(CA私钥)、rootCA.crt(CA公钥证书)

生成服务端服务器证书

生成服务端密钥:

openssl ecparam -name secp384r1 -genkey -noout -out server.key

生成服务端证书请求(CSR):

openssl req -new -key server.key -out server.csr \
  -subj "/CN=www.example.com" \
  -addext "subjectAltName=DNS:www.example.com"

生成客户端证书

生成客户端密钥:

openssl ecparam -name secp384r1 -genkey -noout -out client.key

生成客户端证书请求(CSR):

openssl req -new -key client.key -out client.csr \
  -subj "/CN=client.local" \ 
  -addext "subjectAltName=DNS:client.local" 

签发服务端和客户端证书

签发服务端证书:

openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key \
  -CAcreateserial -out server.crt -days 3650 -sha256 \
  -extfile <(printf "subjectAltName=DNS:www.example.com")

签发客户端证书:

openssl x509 -req -in client.csr -CA rootCA.crt -CAkey rootCA.key \
  -CAcreateserial -out client.crt -days 3650 -sha256 \
  -extfile <(printf "subjectAltName=DNS:client.local")

证书文件说明:

文件名说明是否保密
rootCA.keyCA 私钥严格保密
rootCA.crtCA 公钥证书可公开
server.key服务端私钥保密
server.csr服务端证书请求可删除
server.crt服务端证书可公开
client.key客户端私钥保密
client.csr客户端证书请求可删除
client.crt客户端证书可公开

文章标题:OpenSSL 自签证书

文章作者:浅小沫

文章链接:https://blog.truimo.com/posts/openssl-self-signed-cert


您可以自由在任何媒介以任何形式分享本作品,但需署名,且不得用于商业目的或改编。若分发衍生作品,须采用相同的许可协议。

本博客的所有原创内容采用 CC BY-NC-ND 4.0 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。