代码拉取完成,页面将自动刷新
#! /bin/bash
DEMAIN=''
CA_DIR="/home/CA" #不要有反斜杆
while true; do
read -p "请输入域名:" domain
if [ -z "$domain" ]; then
echo "输入的域名不能为空"
else
DEMAIN=$domain
break;
fi
done
if [ ! -d "${CA_DIR}" ]; then
mkdir $CA_DIR -p
fi
# 第一步创建CA私钥
openssl genrsa -out "${CA_DIR}/root-ca.key" 4096
# 利用私钥创建 CA 根证书请求文件
# -subj 参数里的 /C 表示国家,如 CN;/ST 表示省;/L 表示城市或者地区;/O 表示组织名;/CN 通用名称
openssl req -new -key "${CA_DIR}/root-ca.key" -out "${CA_DIR}/root-ca.csr" -sha256 -subj "/C=CN/ST=Shanxi/L=Datong/O=公司名称/CN=Your Company Name Docker Registry CA"
#配置 CA 根证书,新建 root-ca.cnf
if [ ! -f "${CA_DIR}/root-ca.cnf" ]; then
cat>${CA_DIR}/root-ca.cnf <<END
[root_ca]
basicConstraints = critical,CA:TRUE,pathlen:1
keyUsage = critical, nonRepudiation, cRLSign, keyCertSign
subjectKeyIdentifier=hash
END
fi
# 签发根证书
openssl x509 -req -days 3650 -in "${CA_DIR}/root-ca.csr" -signkey "${CA_DIR}/root-ca.key" -sha256 -out "${CA_DIR}/root-ca.crt" -extfile "${CA_DIR}/root-ca.cnf" -extensions root_ca
# 生成站点SSL私钥
openssl genrsa -out "${CA_DIR}/${DEMAIN}.key" 4096
# 使用私钥生成证书请求文件
openssl req -new -key "${CA_DIR}/${DEMAIN}.key" -out "${CA_DIR}/site.csr" -sha256 -subj "/C=CN/ST=Shanxi/L=Datong/O=Your Company Name/CN=${DEMAIN}"
# 新建文件
if [ ! -f "${CA_DIR}/site.cnf" ]; then
cat>${CA_DIR}/site.cnf <<END
[server]
authorityKeyIdentifier=keyid,issuer
basicConstraints = critical,CA:FALSE
extendedKeyUsage=serverAuth
keyUsage = critical, digitalSignature, keyEncipherment
subjectAltName = DNS:${DEMAIN}, IP:127.0.0.1
subjectKeyIdentifier=hash
END
fi
# 签署站点SSL证书
openssl x509 -req -days 3650 -in "${CA_DIR}/site.csr" -sha256 -CA "${CA_DIR}/root-ca.crt" -CAkey "${CA_DIR}/root-ca.key" -CAcreateserial -out "${CA_DIR}/${DEMAIN}.crt" -extfile "${CA_DIR}/site.cnf" -extensions server
# 删除无效临时文件
rm -rf ${CA_DIR}/root-ca.cnf ${CA_DIR}/root-ca.csr ${CA_DIR}/root-ca.key ${CA_DIR}/root-ca.srl ${CA_DIR}/site.cnf ${CA_DIR}/site.csr
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。