#!/bin/bash

set -e

cd /tmp

SCRIPTE_NAME=$0

if [[ "$SCRIPT_NAME" =~ "^\/" ]];then
    echo "Please change execute path"
    exit 1
fi


read  -p "Please Input Your Domain: " DOMAIN
echo "    Your Domain is: $DOMAIN"

DOMAIN_DIR="$DOMAIN"
mkdir $DOMAIN_DIR && cd $DOMAIN_DIR 


read -p "Create a new CA ?(Y/N): " CA_YES_NO
if [ "x$CA_YES_NO" = "xN" ]; then
  read -p "Please Input Your CA PATH: " CA_PATH
  echo "good $CA_PATH"
  exit 0
elif [ "x$CA_YES_NO" = "xY" ];then
  echo ""
else
  echo "Please Input Y/N"
  exit 1
fi




make_ca() {
    # 创建CA的私钥
    openssl genrsa -out ca.key 2048

    # 创建CA的证书请求文件
    openssl req -new -key ca.key \
                -subj "/C=CN/ST=ZJ/L=HZ/O=testca.com/OU=testca/CN=testca.com/emailAddress=admin@testca.com" \
                -out ca.csr

    # CA自签证书
    openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt -days 35600
}

make_server(){
    # 创建用户的私钥
    openssl genrsa -out ${DOMAIN}.key 2048

    # 创建用户的证书请求文件
    read -p "Single CRT(a.test.com) or all CRT(*.a.test.com) ?(S/A) :" CRT_S_A
    if [ $CRT_S_A = "S" ];then
        openssl req -new -key ${DOMAIN}.key \
                -subj "/C=CN/ST=ZJ/L=HZ/O=test.com/OU=test/CN=$DOMAIN/emailAddress=pritest@test.com" \
                -out ${DOMAIN}.csr
    elif [ $CRT_S_A = "A" ];then
        openssl req -new -key ${DOMAIN}.key \
                -subj "/C=CN/ST=ZJ/L=HZ/O=test.com/OU=test/CN=*.$DOMAIN/emailAddress=pritest@test.com" \
                -out ${DOMAIN}.csr
    else
       echo "INPUT ERROR"
       exit 2
    fi

    # CA给用户的请求文件添加数字签名生产用户证书
    openssl x509 -req -CA ca.crt  -CAkey ca.key  -CAcreateserial -in ${DOMAIN}.csr -out ${DOMAIN}.crt -days 36500
    #openssl rsa -in ${DOMAIN}.key -pubout -out ${DOMAIN}.pem
}

main(){
    make_ca
    make_server
    echo "服务端证书: $DOMAIN_DIR/${DOMAIN}.crt"
    echo "服务证书私钥: $DOMAIN_DIR/${DOMAIN}.key"
    echo "CA证书: $DOMAIN_DIR/ca.crt"
}
main
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2021-04-05 15:24:34

results matching ""

    No results matching ""