该脚本可用于检测 openssl 是否存在,若存在 则生成 ssl证书,证书 国家、省份为XX,组织为 XX, 服务器为内网服务器。IP地址要求给出提示,读取用户从键盘输入数据IP地址需要进行校验是否符合IPV4
#!/bin/bash
# 检测 openssl 是否安装
if ! command -v openssl &> /dev/null
then
echo "openssl 未安装,请先安装 openssl。"
exit 1
fi
# 函数:校验IPv4地址
function validate_ipv4() {
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}(\.[0-9]{1,3}){3}$ ]]; then
OIFS=$IFS
IFS='.' read -r a b c d <<< "$ip"
IFS=$OIFS
[[ $a -le 255 && $b -le 255 && $c -le 255 && $d -le 255 ]]
[[ $a -ge 0 && $b -ge 0 && $c -ge 0 && $d -ge 0 ]]
stat=$?
fi
return $stat
}
# 读取用户输入的IP地址
echo "请输入服务器的IP地址(IPv4):"
read ip_address
# 校验IP地址
if ! validate_ipv4 $ip_address; then
echo "输入的IP地址不是有效的IPv4地址,请重新输入。"
exit 1
fi
# 设置证书信息
CN="$ip_address"
COUNTRY="CN"
STATE="XX"
ORGANIZATION="XXX"
# 生成私钥
echo "正在生成私钥..."
openssl genrsa -out server.key 2048
# 检查私钥是否生成成功
if [ $? -ne 0 ]; then
echo "私钥生成失败。"
exit 1
fi
# 生成证书签名请求(CSR)
echo "正在生成证书签名请求(CSR)..."
openssl req -new -key server.key -out server.csr -subj "/C=$COUNTRY/ST=$STATE/L=Beijing/O=$ORGANIZATION/CN=$CN"
# 检查CSR是否生成成功
if [ $? -ne 0 ]; then
echo "CSR生成失败。"
exit 1
fi
# 自签名证书
echo "正在自签名证书..."
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
# 检查证书是否生成成功
if [ $? -ne 0 ]; then
echo "证书生成失败。"
exit 1
fi
echo "SSL 证书已成功生成。"
echo "私钥文件: server.key"
echo "证书文件: server.crt"
# (可选)查看证书信息
#echo "证书信息如下:"
#openssl x509 -text -noout -in server.crt