#!/bin/bash
# 检查是否提供了域名文件
if [ "$#" -ne 1 ]; then
echo "Usage: $0 domains.txt"
exit 1
fi
DOMAIN_FILE=$1
# 检查域名文件是否存在
if [ ! -f ${DOMAIN_FILE} ]; then
echo "Domain file ${DOMAIN_FILE} does not exist."
exit 1
fi
# 设置变量
DAYS=7300
KEY_FILE="cvessel.key"
CSR_FILE="cvessel.csr"
CERT_FILE="cvessel.crt"
CONFIG_FILE="cvessel.cnf"
SUBJECT="/C=US/ST=California/L=San Francisco/O=Example Inc."
# 生成私钥(如果私钥文件不存在)
if [ ! -f ${KEY_FILE} ]; then
openssl genpkey -algorithm RSA -out ${KEY_FILE} -pkeyopt rsa_keygen_bits:2048
fi
# 创建 OpenSSL 配置文件
cat > ${CONFIG_FILE} <<EOL
[ req ]
default_bits = 2048
default_keyfile = ${KEY_FILE}
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
C = US
ST = California
L = San Francisco
O = Example Inc.
CN = $(head -n 1 ${DOMAIN_FILE})
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
EOL
# 添加域名到配置文件
i=1
while IFS= read -r domain; do
echo "DNS.$i = *.$domain" >> ${CONFIG_FILE}
i=$((i+1))
echo "DNS.$i = $domain" >> ${CONFIG_FILE}
i=$((i+1))
done < ${DOMAIN_FILE}
# 生成证书签名请求(CSR)
openssl req -new -key ${KEY_FILE} -out ${CSR_FILE} -config ${CONFIG_FILE}
# 自签名生成证书
openssl x509 -req -days ${DAYS} -in ${CSR_FILE} -signkey ${KEY_FILE} -out ${CERT_FILE} -extensions req_ext -extfile ${CONFIG_FILE}
# 清理配置文件
rm ${CONFIG_FILE}
echo "自签名的泛域名证书已生成:"
echo "私钥: ${KEY_FILE}"
echo "证书签名请求: ${CSR_FILE}"
echo "证书: ${CERT_FILE}"
openssl 证书脚本
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.OpenSSL配置简介 在windows环境下安装完OpenSSL,需要修改openssl.cfg配置文件,修...
- 一、实验环境 操作系统:CentOS7.5 serverA: 192.168.1.104 ,虚拟机上运行java服...
- [C:\openssl-0.9.8h-1-bin\bin]$ openssl verify -CAfile ca....
- 一、前言废话 受到12306的启发,我们自己从根证书起搭建一条完整的信任链。本章中我们使用OpenSSL生成根证书...