#!/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_SERIALecho "证书生成完成并已移动到 $OUTPUT_DIR"
ls -l $OUTPUT_DIR