openssl生成v3_使用OpenSSL生成自签名证书

本文提供了一个shell脚本,用于生成自签名的V3 SSL证书。通过修改openssl.cnf文件并启用V3_CA扩展,解决Firefox无法识别证书的问题。脚本会引导用户输入根证书和目标证书的名称、过期时间以及DNS名称,生成包含DNS和IP的subjectAltName。
摘要由CSDN通过智能技术生成

虽然说都8102年了,Let’s Encrypt都支持通配符证书了,但是对我这种不想再去买个域名来给我内网的机器做证书的人来说,用自签名证书当然是最好的方式了。使用OpenSSL做自签名证书的教程网上一搜一把,但是搜出来的那些生成的证书居然都在Firefox下无法通过。究其原因,是没有设置subjectAltName惹的祸。这里给一个生成脚本,让你一键(其实并没有)生成自签名的SSL证书。注意使用前需要修改openssl.cnf文件,删除[ req ]节下的 x509_extensions = v3_ca前面的注释符号,以支持V3版本的证书生成。

输入subjectAltName的时候,可以输入域名或者是IP,但是不要输错了。我就是因为将IP输入到域名区域,导致了firefox不认域名。

#!/bin/bash

echo "自签名证书生成脚本"

read -p "根证书存放位置(不含扩展名): " RootCA

if [ ! -f $RootCA.key ]; then

echo "$RootCA不存在,将生成一个根证书"

openssl genrsa -out $RootCA.key

read -p "根证书过期时间" ExpireDays

openssl req -new -x509 -key $RootCA.key -out $RootCA.crt -days $ExpireDays

fi

read -p "你要生成的证书名称: " CertCA

if [ ! -f $CertCA.pem ]; then

echo "$CertCA证书不存在,将生成一个新的证书"

openssl genrsa -des3 -out $CertCA.pem

echo "$CertCA私钥不存在,将从证书中解密私钥"

openssl rsa -in $CertCA.pem -out $CertCA.key

fi

if [ ! -f $CertCA.key ]; then

echo "$CertCA私钥不存在,您可能需要手工使用下列命令生成"

echo "openssl rsa -in $CertCA.pem -out $CertCA.key"

fi

echo "为$CertCA生成证书请求文件…"

openssl req -new -key $CertCA.pem -out $CertCA.csr

read -p "DNS名称(subjectAltName)[DNS:localhost, IP:127.0.0.1, ...]" AltName

read -p "根证书过期时间(天): " ExpireDays

openssl x509 -req -days $ExpireDays -CA $RootCA.crt -CAkey $RootCA.key -in $CertCA.csr -out $CertCA.crt -CAcreateserial -extfile

if [ -f $CertCA.key ]; then

cat $CertCA.crt $RootCA.crt > $CertCA.bundle.crt

echo "生成完毕。你现在可以将$CertCA.bundle.crt与$CertCA.key复制到你的web服务器上了。"

else

echo "证书生成失败"

exit 1;

fi

read -p "是否想要显示证书内容?(yes(y)|no(n)): " need

case $need in

yes|y)

openssl x509 -in $CertCA.crt -text -noout

;;

no|n)

#do anything you wannt

;;

*)

#do anything you wannt as default(直接回车)

openssl x509 -in $CertCA.crt -text -noout

;;

esac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值