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.key | CA 私钥 | 严格保密 |
rootCA.crt | CA 公钥证书 | 可公开 |
server.key | 服务端私钥 | 保密 |
server.csr | 服务端证书请求 | 可删除 |
server.crt | 服务端证书 | 可公开 |
client.key | 客户端私钥 | 保密 |
client.csr | 客户端证书请求 | 可删除 |
client.crt | 客户端证书 | 可公开 |