OpenSSL-基于IP或域名生成自签名证书脚本
个人名片:
对人间的热爱与歌颂,可抵岁月冗长🌞
Github👨🏻💻:念舒_C.ying
CSDN主页✏️:念舒_C.ying
个人博客🌏 :念舒_C.ying
一、安装
需要安装并配置OpenSSL工具。
yum install openssl
二、创建自签名证书
2.1 基于域名
- 创建私钥
openssl genrsa -out nianshu.com.key 2048
- 创建证书签名请求(CSR)
openssl req -new -key nianshu.com.key -out draw.by.gs.csr
- 创建自签名证书
openssl x509 -req -days 3650 -in nianshu.com.csr -signkey nianshu.com.key -out nianshu.com.crt
在执行此命令时,您可以使用-days
选项来指定证书的有效期。在上述示例中,证书的有效期为10年(3650天)。如果您想要更长期的有效期,可以将该值增加。
- 证书格式转换
使用以下命令将证书格式转换为PEM格式:
openssl x509 -in nianshu.com.crt -out nianshu.com.pem -outform PEM
现在,您已经成功创建了域名的自签名证书,并将其保存为PEM格式的文件。请注意,自签名证书不被公共信任,因此它们只适用于内部使用或开发目的。如果您要将您的网站公开发布,建议您购买由受信任的第三方证书颁发机构(CA)颁发的证书。
- 脚本创建自签名证书
#!/bin/bash# 设置变量
DOMAIN="draw.by.gs" #域名
CERT_DIR="/certs" #目录
COUNTRY="CN" #国家
STATE="GANSU" #省/州
CITY="LANZHOU" #城市
ORG_NAME="" #组织
EMAIL="admin@nianshu.com" #邮箱
KEY_SIZE="2048"
DAYS="365" #有效期# 生成私钥
openssl genrsa -out $CERT_DIR/$DOMAIN.key $KEY_SIZE# 生成证书签名请求(CSR)
openssl req -new -key $CERT_DIR/$DOMAIN.key -out $CERT_DIR/$DOMAIN.csr -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORG_NAME/CN=$DOMAIN/emailAddress=$EMAIL"# 生成自签名证书
openssl x509 -req -days $DAYS -in $CERT_DIR/$DOMAIN.csr -signkey $CERT_DIR/$DOMAIN.key -out $CERT_DIR/$DOMAIN.crt# 删除证书请求文件
rm draw.by.gs.csr# 输出证书内容
echo "--------------------------"
echo "生成的证书文件:"
ls -al $DOMAIN.*
echo ""
echo "证书内容:"
openssl x509 -in $DOMAIN.crt -noout -text
脚本中首先设置了一些变量,这些变量包括要生成证书的域名、证书存储目录、组织方信息等等。接着,通过openssl工具生成证书所需的私钥、证书签名请求以及自签名证书,最终将证书存储在指定的目录下。注意,生成完证书后,需要将证书请求文件删除,因为它不再需要。
- 使用该脚本需事先安装openssl,可使用以下命令安装:
yum install openssl
2.2 基于IP
- 创建一个名为
openssl.cnf
的文件:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no[req_distinguished_name]
C = CN
ST = Some-State
L = Some-City
O = Some-Company
OU = Some-Organization
CN = example.com[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names[alt_names]
IP.1 = 192.168.0.12
此配置文件包含有关证书的信息。使用示例信息并将其替换为您的数据。特别是,您需要修改 C
, ST
, L
, O
, OU
, 和 CN
的值。此外,您还可以看到 subjectAltName
部分需要修改,确保 IP.1
下的IP地址正确。
- 使用以下命令生成密钥和证书:
openssl req -new -newkey rsa:4096 -nodes -keyout domain.key -config openssl.cnf -x509 -sha256 -days 365 -out domain.crt
这将生成一个名为 domain.key
的RSA密钥文件和一个名为 domain.crt
的证书文件,包含配置文件中的数据和有效。
- 合并证书
cat domain.crt domain.key > ./ssl.pem
期待下次的分享,别忘了三连支持博主呀~
我是 念舒_C.ying ,期待你的关注~💪💪💪