• 生成证书脚本


    注:如果复制之后,在Centos里边出现Windows和Linux格式不匹配,使用以下命令修改文件格式,然后再执行脚本即可。

    1、yum -y install dos2unix
    
    2、dos2unix 文件名

    1、如下是生成国密证书的脚本

    #!/bin/bash
      
    set -e
    dir=`dirname $0`
    expire_days=3650
    subj=/C="CN"/ST="Beijing"/L="Beijing"/O="Hy"/OU="hy"/CN="hyR"
    subji=/C="CN"/ST="Beijing"/L="Beijing"/O="Hy"/OU="hy"/CN="hyI"
    subjs=/C="CN"/ST="Beijing"/L="Beijing"/O="Hy"/OU="hy"/CN="hyS"
    subj2=/C="CN"/ST="Beijing"/L="Beijing"/O="Hy"/OU="hy"/CN="hy"
    subj3=/C="CN"/ST="Beijing"/L="Beijing"/O="Hy"/OU="hy"/CN="hy1"
    server="server-gmchain"
    param=$server
    if [ -d $param ]; then
                rm -r $param
        fi
        mkdir -p $param
        cd $param
        ca_name=ca-root-$param
        root_cacer=$ca_name.cer
        root_cakey=$ca_name.key
        ca_name=ca-sub1-$param
        sub1_cacer=$ca_name.cer
        sub1_cakey=$ca_name.key
        ca_name=ca-sub2-$param
        cacer=$ca_name.cer
        cakey=$ca_name.key
        cer=$param.cer
        csr=$param.csr
        key=$param.key
        #add
        server_name=client-$param
        cer1=$server_name.cer
        csr1=$server_name.csr
        key1=$server_name.key
    
        mkdir -p $dir/demoCA/{private,newcerts}
        touch $dir/demoCA/index.txt
        echo 01 > $dir/demoCA/serial
        echo 01 > $dir/demoCA/crlnumber
        cd demoCA
        ln -sf ../$root_cacer cacert.pem
        cd -
        cd demoCA/private
        ln -sf ../../$root_cakey cakey.pem
        cd -
    
    
        #Root CA
        gmssl ecparam -genkey -name sm2p256v1 -out $root_cakey
        gmssl req -x509 -sm3 -key $root_cakey -out $root_cacer -subj $subj -days $expire_days
        echo "===================Gen Root CA OK===================="
    
        #Sub1 CA
        gmssl ecparam -genkey -name sm2p256v1 -out $sub1_cakey
        gmssl req -new -sm3 -extensions v3_req -key $sub1_cakey -out $csr -subj $subji -days $expire_days
        gmssl ca -md sm3 -extensions v3_ca -batch -notext -in $csr -out $sub1_cacer
        echo "===================Gen Sub1 CA OK===================="
    
        #Sub2 CA
        gmssl ecparam -genkey -name sm2p256v1 -out $cakey
        gmssl req -new -sm3 -key $cakey -extensions v3_req -out $csr -subj $subjs -days $expire_days
        gmssl ca -md sm3 -extensions v3_ca -batch -notext -in $csr -out $cacer -cert $sub1_cacer -keyfile $sub1_cakey
    
        echo "===================Gen Sub2 CA OK===================="
    
        #Server cert
        gmssl ecparam -genkey -name sm2p256v1 -out $key
        gmssl req -new -key $key -out $csr -subj $subj2 -days $expire_days
        gmssl ca -md sm3 -batch -notext -in $csr -out $cer -cert $sub1_cacer -keyfile $sub1_cakey

        echo "===================Gen Server cert OK===================="

        #Server1 cert
        gmssl ecparam -genkey -name sm2p256v1 -out $key1
        gmssl req -new -key $key1 -out $csr1 -subj $subj3 -days $expire_days
        gmssl ca -md sm3 -batch -notext -in $csr1 -out $cer1 -cert $sub1_cacer -keyfile $sub1_cakey
        rm -f *.csr *.srl

    
    

        echo "===================Gen Server1 cert OK===================="

    
    

        cat $cer $cacer $sub1_cacer |tee $param.pem
        echo "===================Gen All OK===================="

     
    
    

     2、如下是生成国际证书脚本

    #!/bin/bash
    
    set -e
    dir=`dirname $0`
    key_bits=2048  
    expire_days=3650
    subj=/C="CN"/ST="Beijing"/L="Beijing"/O="Hy"/OU="hy"/CN="hyR"
    subji=/C="CN"/ST="Beijing"/L="Beijing"/O="Hy"/OU="hy"/CN="hyI"
    subjs=/C="CN"/ST="Beijing"/L="Beijing"/O="Hy"/OU="hy"/CN="hyS"
    subj2=/C="CN"/ST="Beijing"/L="Beijing"/O="Hy"/OU="hy"/CN="hy"
    server="server-gmchain"
    param=$server
    if [ -d $param ]; then
            rm -r $param
        fi
        mkdir -p $param
        cd $param
        ca_name=ca-root-$param
        root_cacer=$ca_name.cer
        root_cakey=$ca_name.key
        ca_name=ca-sub1-$param
        sub1_cacer=$ca_name.cer
        sub1_cakey=$ca_name.key
        ca_name=ca-sub2-$param
        cacer=$ca_name.cer
        cakey=$ca_name.key
        cer=$param.cer
        csr=$param.csr
        key=$param.key
    
        mkdir -p $dir/demoCA/{private,newcerts}
        touch $dir/demoCA/index.txt
        echo 01 > $dir/demoCA/serial
        echo 01 > $dir/demoCA/crlnumber
        cd demoCA
        ln -sf ../$root_cacer cacert.pem
        cd -
        cd demoCA/private
        ln -sf ../../$root_cakey cakey.pem
        cd -
    
        # -------------------------------------GenRSA---------------------------------
    
        #Root CA
        openssl genrsa -out $root_cakey $key_bits
        openssl req -x509 -newkey rsa:$key_bits -keyout $root_cakey -nodes -out $root_cacer -subj $subj -days $expire_days
        echo "===================Gen Root CA OK===================="
    
        #Sub1 CA
        openssl genrsa -out $sub1_cakey $key_bits
        openssl req -new -key $sub1_cakey -sha256 -out $csr -subj $subji -days $expire_days
        openssl ca -extensions v3_ca -batch -notext -in $csr -out $sub1_cacer
        echo "===================Gen Sub1 CA OK===================="
    
        #Sub2 CA
        openssl genrsa -out $cakey $key_bits
        openssl req -new -key $cakey -sha256 -out $csr -subj $subjs -days $expire_days
        openssl ca -extensions v3_ca -batch -notext -in $csr -out $cacer -cert $sub1_cacer -keyfile $sub1_cakey
        echo "===================Gen Sub2 CA OK===================="
    
        #Server cert
        openssl genrsa -out $key $key_bits
        openssl req -new -key $key -sha256 -out $csr -subj $subj2 -days $expire_days
        openssl x509 -req -in $csr -sha256 -out $cer -CA $cacer -CAkey $cakey -CAserial t_ssl_ca.srl -CAcreateserial -days $expire_days -extensions v3_req
        #openssl pkcs12 -export -clcerts -in client.cer -inkey client.key -out client.p12
    
        rm -f *.csr *.srl
    
        cat $cer $cacer $sub1_cacer |tee $param.pem
        echo "===================Gen All OK===================="
  • 相关阅读:
    Idea的类中使用实体类(有@Data注解)的Get/Set方法报错
    Springboot前后端分离中,后端拦截器拦截后,前端没有对应的返回码可以判断
    Window NodeJs安装
    Linux(CENTOS7) NodeJs安装
    Linux(CENTOS7) YUM方式安装mysql5.7
    根据M3U8地址下载视频
    Mysql时间范围分区(RANGE COLUMNS方式)
    Window Mysql5.7免安装版配置
    Window Jdk配置(win7/win10都可以)
    .net core2.0 读取appsettings.json
  • 原文地址:https://www.cnblogs.com/marshu/p/13704322.html
Copyright © 2020-2023  润新知