以下是制作自签名证书的 shell 脚本,适用于 CentOS 7 和 nginx:

#!/bin/bash

# 主域名
DOMAIN=ctyunai.dev
# 证书保存路径
CERT_PATH=/etc/nginx/ssl/$DOMAIN
# 证书有效期(单位:天)
VALID_DAYS=3650
# 证书密码
CERT_PASS=your_password

# 创建证书保存目录
mkdir -p $CERT_PATH

# 生成私钥
openssl genrsa -des3 -passout pass:$CERT_PASS -out $CERT_PATH/$DOMAIN.key 2048

# 去除私钥口令
openssl rsa -passin pass:$CERT_PASS -in $CERT_PATH/$DOMAIN.key -out $CERT_PATH/$DOMAIN.key

# 生成证书请求
openssl req -new -key $CERT_PATH/$DOMAIN.key -out $CERT_PATH/$DOMAIN.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=your_organization/OU=your_department/CN=$DOMAIN"

# 生成证书文件
openssl x509 -req -days $VALID_DAYS -in $CERT_PATH/$DOMAIN.csr -signkey $CERT_PATH/$DOMAIN.key -out $CERT_PATH/$DOMAIN.crt

# 创建证书链文件
cat $CERT_PATH/$DOMAIN.crt $CERT_PATH/$DOMAIN.key > $CERT_PATH/$DOMAIN.pem

# 生成通配符证书
openssl x509 -req -days $VALID_DAYS -in $CERT_PATH/$DOMAIN.csr -signkey $CERT_PATH/$DOMAIN.key -out $CERT_PATH/wildcard.crt -extensions v3_req -extfile <(printf "[v3_req]\nsubjectAltName=DNS:*.${DOMAIN}")

# 创建通配符证书链文件
cat $CERT_PATH/wildcard.crt $CERT_PATH/$DOMAIN.key > $CERT_PATH/wildcard.pem

# 设置证书文件权限
chmod 400 $CERT_PATH/*

echo "证书创建完成:"
ls -l $CERT_PATH

执行以上脚本,将会在 /etc/nginx/ssl/ctyunai.dev 目录下生成以下文件:

  • ctyunai.dev.key:私钥文件。
  • ctyunai.dev.crt:证书文件。
  • ctyunai.dev.pem:证书链文件。
  • wildcard.crt:通配符证书文件。
  • wildcard.pem:通配符证书链文件。

其中,通配符证书文件 wildcard.crt 匹配所有的子域名。nginx 配置示例:

server {
    listen 443 ssl;
    server_name *.ctyunai.dev;
    ssl_certificate /etc/nginx/ssl/ctyunai.dev/wildcard.pem;
    ssl_certificate_key /etc/nginx/ssl/ctyunai.dev/ctyunai.dev.key;
    ...
}
CentOS7 nginx 自签名主域名:ctyunaidev 生成自签名匹配所有的子域名的证书。制作成shell脚本。

原文地址: http://www.cveoy.top/t/topic/bQNe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录