#!/bin/bash
# 设置变量
CA_KEY="cakey.pem"
CA_CERT="ca.crt"
CA_SERIAL="ca.srl"
CLIENT_KEY="client.pri"
CLIENT_CSR="client.csr"
CLIENT_CERT="client.crt"
CACERT_PEM="cacert.pem"
OUTPUT_DIR="/root/ssl"
DOMAIN="ClientCert"
DAYS=$(( (2999 - $(date +"%Y")) * 365 ))
# 创建输出目录
mkdir -p "$OUTPUT_DIR"
# 生成 CA 私钥
openssl genrsa -out $CA_KEY 2048
# 生成自签名 CA 证书
openssl req -new -x509 -key $CA_KEY -out $CA_CERT -days $DAYS \
-subj "/C=CN/ST=State/L=City/O=Company/OU=Org/CN=RootCA"
# 生成 PEM 格式 CA 证书(可选)
cp $CA_CERT $CACERT_PEM
# 生成客户端私钥
openssl genrsa -out $CLIENT_KEY 2048
# 生成客户端证书请求 (CSR)
openssl req -new -key $CLIENT_KEY -out $CLIENT_CSR \
-subj "/C=CN/ST=State/L=City/O=Company/OU=Org/CN=$DOMAIN"
# 使用 CA 签发客户端证书
openssl x509 -req -in $CLIENT_CSR -CA $CA_CERT -CAkey $CA_KEY -CAcreateserial \
-out $CLIENT_CERT -days $DAYS -sha256
# 移动文件到目标目录
mv $CA_KEY $CA_CERT $CACERT_PEM $CLIENT_KEY $CLIENT_CERT $OUTPUT_DIR
# 清理中间文件
rm -f $CLIENT_CSR $CA_SERIAL
echo "证书生成完成并已移动到 $OUTPUT_DIR"
ls -l $OUTPUT_DIR
标签:2999,CA,SSL,CERT,CLIENT,DIR,KEY,Bash,out
From: https://www.cnblogs.com/guowenrui/p/18624726