一键使用 Bash 脚本生成有效期至 2999 年的 SSL 证书并自动部署

#!/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
posted @ 2024-12-23 18:06  郭小睿  阅读(55)  评论(0)    收藏  举报