【Linux 自签SSL证书】

该脚本可用于检测 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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux系统中,自签证书主要用于验证本地主机的身份,当证书过期时,可能会遇到以下情况: 1. **证书有效性检查失败**:当你尝试使用HTTPS、SSH等安全协议连接到服务器时,系统会检查证书的有效性。过期的证书会被视为无效,导致连接失败或显示警告。 2. **SSL/TLS握手问题**:在浏览器或其他客户端中,如果SSL/TLS握手阶段检测到证书已过期,连接会被中断,显示“证书已过期”或类似错误信息。 3. **服务不可用**:对于依赖于SSL/TLS证书的应用程序(如Apache、Nginx等),证书过期可能导致服务拒绝新连接,直到证书更新或禁用SSL检查。 解决方法: - **更新证书**:首先,你需要获取一个新的证书并替换过期的自签证书。这通常涉及到生成或下载一个新的证书,并使用`openssl`命令替换原有的证书文件。 - **更新有效期设置**:在配置文件中,确认证书的有效期限被正确设置。例如,在Nginx中,你需要更新`/etc/nginx/conf.d/ssl.conf`中的`ssl_certificate`和`ssl_certificate_key`路径及有效期限。 - **重启服务**:在更改证书后,记得重启相关的服务,如`nginx restart`或`systemctl restart nginx`,使新证书生效。 - **配置信任期限**:有些情况下,客户端可能会暂时接受过期证书,但只在有限时间内。如果你希望客户端能继续连接,可能需要设置一些临时的信任策略。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值