⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gid-mkcert.sh

📁 apach加密模块
💻 SH
字号:
#!/bin/sh####  gid-mkcert.sh -- Create Certificates for Global Server ID facility##  Copyright (c) 1998-2000 Ralf S. Engelschall, All Rights Reserved. ####  This script is derived from mkcert.sh from the mod_ssl distribution.##  It requires OpenSSL 0.9.4.###   parametersopenssl="openssl"sslcrtdir="."sslcsrdir="."sslkeydir="."#   some optional terminal sequencescase $TERM in    xterm|xterm*|vt220|vt220*)        T_MD=`echo dummy | awk '{ printf("%c%c%c%c", 27, 91, 49, 109); }'`        T_ME=`echo dummy | awk '{ printf("%c%c%c", 27, 91, 109); }'`        ;;    vt100|vt100*)        T_MD=`echo dummy | awk '{ printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }'`        T_ME=`echo dummy | awk '{ printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }'`        ;;    default)        T_MD=''        T_ME=''        ;;esac#   find some random files#   (do not use /dev/random here, because this device #   doesn't work as expected on all platforms)randfiles=''for file in /var/log/messages /var/adm/messages \            /kernel /vmunix /vmlinuz \            /etc/hosts /etc/resolv.conf; do    if [ -f $file ]; then        if [ ".$randfiles" = . ]; then            randfiles="$file"        else            randfiles="${randfiles}:$file"        fi    fidoneecho "${T_MD}This is GID-MKCERT (Global Server ID Generation)${T_ME}"echo "${T_MD}Copyright (c) 1998-2000 Ralf S. Engelschall, All Rights Reserved.${T_ME}"if [ ! -f $sslcrtdir/ca.crt ]; then    echo ""    echo "${T_MD}Generating custom Certificate Authority (CA)${T_ME}"    echo "______________________________________________________________________"    echo ""    echo "${T_MD}STEP 1: Generating RSA private key for CA (1024 bit)${T_ME}"    if [ ! -f $HOME/.rnd ]; then        touch $HOME/.rnd    fi    if [ ".$randfiles" != . ]; then        $openssl genrsa -rand $randfiles \                        -out $sslkeydir/ca.key \                        1024    else        $openssl genrsa -out $sslkeydir/ca.key \                        1024    fi    if [ $? -ne 0 ]; then        echo "gid-mkcert.sh:Error: Failed to generate RSA private key" 1>&2        exit 1    fi    echo "______________________________________________________________________"    echo ""    echo "${T_MD}STEP 2: Generating X.509 certificate signing request for CA${T_ME}"    cat >.mkcert.cfg <<EOT[ req ]default_bits                    = 1024distinguished_name              = req_DN[ req_DN ]countryName                     = "1. Country Name             (2 letter code)"countryName_default             = XYcountryName_min                 = 2countryName_max                 = 2stateOrProvinceName             = "2. State or Province Name   (full name)    "stateOrProvinceName_default     = Snake DesertlocalityName                    = "3. Locality Name            (eg, city)     "localityName_default            = Snake Town0.organizationName              = "4. Organization Name        (eg, company)  "0.organizationName_default      = Snake Oil, LtdorganizationalUnitName          = "5. Organizational Unit Name (eg, section)  "organizationalUnitName_default  = Certificate AuthoritycommonName                      = "6. Common Name              (eg, CA name)  "commonName_max                  = 64commonName_default              = Snake Oil CAemailAddress                    = "7. Email Address            (eg, name@FQDN)"emailAddress_max                = 40emailAddress_default            = ca@snakeoil.domEOT    $openssl req -config .mkcert.cfg \                 -new \                 -key $sslkeydir/ca.key \                 -out $sslcsrdir/ca.csr    if [ $? -ne 0 ]; then        echo "gid-mkcert.sh:Error: Failed to generate certificate signing request" 1>&2        exit 1    fi    echo "______________________________________________________________________"    echo ""    echo "${T_MD}STEP 3: Generating X.509 certificate for CA signed by itself${T_ME}"    cat >.mkcert.cfg <<EOTextensions = x509v3[ x509v3 ]subjectAltName   = email:copybasicConstraints = CA:true,pathlen:0nsComment        = "mod_ssl generated custom CA certificate"nsCertType       = sslCAEOT    $openssl x509 -extfile .mkcert.cfg \                  -days 365 \                  -signkey $sslkeydir/ca.key \                  -in  $sslcsrdir/ca.csr -req \                  -out $sslcrtdir/ca.crt    if [ $? -ne 0 ]; then        echo "gid-mkcert.sh:Error: Failed to generate self-signed CA certificate" 1>&2        exit 1    fi    echo "______________________________________________________________________"    echo ""    echo "${T_MD}RESULT:${T_ME}"    $openssl verify $sslcrtdir/ca.crt    if [ $? -ne 0 ]; then        echo "gid-mkcert.sh:Error: Failed to verify resulting X.509 certificate" 1>&2        exit 1    fifiecho ""echo "${T_MD}Generating custom SERVER${T_ME}"echo "______________________________________________________________________"echo ""echo "${T_MD}STEP 5: Generating RSA private key for SERVER (1024 bit)${T_ME}"if [ ! -f $HOME/.rnd ]; then    touch $HOME/.rndfiif [ ".$randfiles" != . ]; then    $openssl genrsa -rand $randfiles \                    -out $sslkeydir/server.key \                    1024else    $openssl genrsa -out $sslkeydir/server.key \                    1024fiif [ $? -ne 0 ]; then    echo "gid-mkcert.sh:Error: Failed to generate RSA private key" 1>&2    exit 1fiecho "______________________________________________________________________"echo ""echo "${T_MD}STEP 6: Generating X.509 certificate signing request for SERVER${T_ME}"cat >.mkcert.cfg <<EOT[ req ]default_bits                    = 1024distinguished_name              = req_DN[ req_DN ]countryName                     = "1. Country Name             (2 letter code)"countryName_default             = XYcountryName_min                 = 2countryName_max                 = 2stateOrProvinceName             = "2. State or Province Name   (full name)    "stateOrProvinceName_default     = Snake DesertlocalityName                    = "3. Locality Name            (eg, city)     "localityName_default            = Snake Town0.organizationName              = "4. Organization Name        (eg, company)  "0.organizationName_default      = Snake Oil, LtdorganizationalUnitName          = "5. Organizational Unit Name (eg, section)  "organizationalUnitName_default  = Webserver TeamcommonName                      = "6. Common Name              (eg, FQDN)     "commonName_max                  = 64commonName_default              = www.snakeoil.domemailAddress                    = "7. Email Address            (eg, name@fqdn)"emailAddress_max                = 40emailAddress_default            = www@snakeoil.domEOT$openssl req -config .mkcert.cfg \             -new \             -key $sslkeydir/server.key \             -out $sslcsrdir/server.csrif [ $? -ne 0 ]; then    echo "gid-mkcert.sh:Error: Failed to generate certificate signing request" 1>&2    exit 1fiecho "______________________________________________________________________"echo ""echo "${T_MD}STEP 7: Generating X.509 certificate signed by own CA${T_ME}"cat >.mkcert.cfg <<EOTextensions = x509v3[ x509v3 ]subjectAltName    = email:copybasicConstraints  = pathlen:0nsComment         = "mod_ssl generated custom server certificate"nsCertType        = server#extendedKeyUsage = RID:2.16.840.1.113730.4.1,RID:1.3.6.1.4.1.311.10.3.3extendedKeyUsage  = msSGC,nsSGCEOTif [ ! -f .mkcert.serial ]; then    echo '01' >.mkcert.serialfi$openssl x509 -extfile .mkcert.cfg \              -days 365 \              -CAserial .mkcert.serial \              -CA $sslcrtdir/ca.crt \              -CAkey $sslkeydir/ca.key \              -in $sslcsrdir/server.csr -req \              -out $sslcrtdir/server.crtif [ $? -ne 0 ]; then    echo "gid-mkcert.sh:Error: Failed to generate X.509 certificate" 1>&2    exit 1ficaname="`$openssl x509 -noout -text -in $sslcrtdir/ca.crt |\         grep Subject: | sed -e 's;.*CN=;;' -e 's;/Em.*;;'`"username="`$openssl x509 -noout -text -in $sslcrtdir/server.crt |\            grep Subject: | sed -e 's;.*CN=;;' -e 's;/Em.*;;'`"$openssl pkcs12 \    -export \    -in $sslcrtdir/server.crt \    -inkey $sslkeydir/server.key \    -certfile $sslcrtdir/ca.crt \    -name "$username" \    -caname "$caname" \    -out $sslcrtdir/server.p12echo "______________________________________________________________________"echo ""echo "${T_MD}RESULT:${T_ME}"$openssl verify -CAfile $sslcrtdir/ca.crt $sslcrtdir/server.crtif [ $? -ne 0 ]; then    echo "gid-mkcert.sh:Error: Failed to verify resulting X.509 certificate" 1>&2    exit 1fiecho "______________________________________________________________________"echo ""echo "${T_MD}STEP 8: Enrypting RSA private key of SERVER with a pass phrase for security${T_ME}"$openssl rsa -des3 -in $sslkeydir/server.key -out $sslkeydir/server.key.cryptif [ $? -ne 0 ]; then    echo "gid-mkcert.sh:Error: Failed to encrypt RSA private key" 1>&2    exit 1ficp $sslkeydir/server.key.crypt $sslkeydir/server.keyrm -f $sslkeydir/server.key.crypt##EOF##

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -