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

📄 cca.sh

📁 apach加密模块
💻 SH
字号:
#!/bin/sh####  CCA -- Trivial Client CA management for testing purposes##  Copyright (c) 1998-2000 Ralf S. Engelschall, All Rights Reserved. ###   external toolsopenssl="/usr/local/ssl/bin/openssl"#   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}CCA -- Trivial Client CA management for testing purposes${T_ME}"echo "Copyright (c) 1998-2000 Ralf S. Engelschall, All Rights Reserved."echo ""if [ $# -eq 0 ]; then    cmd=dummyelse    cmd=$1    shiftficase $cmd in  init )    echo "${T_MD}INITIALIZATION${T_ME}"    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}"    cp /dev/null ca.rnd    echo '01' >ca.ser    if [ ".$randfiles" != . ]; then        $openssl genrsa -rand $randfiles -out ca.key 1024    else        $openssl genrsa -out ca.key 1024    fi    if [ $? -ne 0 ]; then        echo "cca: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 >.cfg <<EOT[ req ]default_bits                    = 1024distinguished_name              = req_DNRANDFILE                        = ca.rnd[ 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 .cfg -new -key ca.key -out ca.csr    if [ $? -ne 0 ]; then        echo "cca: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 >.cfg <<EOTextensions = x509v3[ x509v3 ]subjectAltName   = email:copybasicConstraints = CA:true,pathlen:0nsComment        = "CCA generated custom CA certificate"nsCertType       = sslCAEOT    $openssl x509 -extfile .cfg -req -days 365 -signkey ca.key -in ca.csr -out ca.crt    if [ $? -ne 0 ]; then        echo "cca:Error: Failed to generate self-signed CA certificate" 1>&2        exit 1    fi    echo "______________________________________________________________________"    echo ""    echo "${T_MD}RESULT:${T_ME}"    $openssl verify ca.crt    if [ $? -ne 0 ]; then        echo "cca:Error: Failed to verify resulting X.509 certificate" 1>&2        exit 1    fi    $openssl x509 -text -in ca.crt    $openssl rsa -text -in ca.key    ;;  gen )    echo "${T_MD}CERTIFICATE GENERATION${T_ME}"    user="user-`cat ca.ser`"    echo ""    echo "${T_MD}Generating custom USER${T_ME} [$user]"    echo "______________________________________________________________________"    echo ""    echo "${T_MD}STEP 5: Generating RSA private key for USER (1024 bit)${T_ME}"    if [ ".$randfiles" != . ]; then        $openssl genrsa -rand $randfiles -out $user.key 1024    else        $openssl genrsa -out $user.key 1024    fi    if [ $? -ne 0 ]; then        echo "cca:Error: Failed to generate RSA private key" 1>&2        exit 1    fi    echo "______________________________________________________________________"    echo ""    echo "${T_MD}STEP 6: Generating X.509 certificate signing request for USER${T_ME}"    cat >.cfg <<EOT[ req ]default_bits                    = 1024distinguished_name              = req_DNRANDFILE                        = ca.rnd[ 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  = Snake Oil Test DepartementcommonName                      = "6. Common Name              (eg, subject)  "commonName_max                  = 64commonName_default              = Dr. Snake OilemailAddress                    = "7. Email Address            (eg, name@fqdn)"emailAddress_max                = 40emailAddress_default            = dr@snakeoil.domEOT    $openssl req -config .cfg -new -key $user.key -out $user.csr    if [ $? -ne 0 ]; then        echo "cca:Error: Failed to generate certificate signing request" 1>&2        exit 1    fi    rm -f .cfg    echo "______________________________________________________________________"    echo ""    echo "${T_MD}STEP 7: Generating X.509 certificate signed by own CA${T_ME}"    cat >.cfg <<EOTextensions = x509v3[ x509v3 ]subjectAltName   = email:copybasicConstraints = CA:false,pathlen:0nsComment        = "CCA generated client certificate"nsCertType       = clientEOT    $openssl x509 -extfile .cfg -days 365 -CAserial ca.ser -CA ca.crt -CAkey ca.key -in $user.csr -req -out $user.crt    if [ $? -ne 0 ]; then        echo "cca:Error: Failed to generate X.509 certificate" 1>&2        exit 1    fi    caname="`$openssl x509 -noout -text -in ca.crt |\             grep Subject: | sed -e 's;.*CN=;;' -e 's;/Em.*;;'`"    username="`$openssl x509 -noout -text -in $user.crt |\               grep Subject: | sed -e 's;.*CN=;;' -e 's;/Em.*;;'`"    echo "Assembling PKCS#12 package"    $openssl pkcs12 -export -in $user.crt -inkey $user.key -certfile ca.crt -name "$username" -caname "$caname" -out $user.p12    echo "______________________________________________________________________"    echo ""    echo "${T_MD}RESULT:${T_ME}"    $openssl verify -CAfile ca.crt $user.crt    if [ $? -ne 0 ]; then        echo "cca:Error: Failed to verify resulting X.509 certificate" 1>&2        exit 1    fi    $openssl x509 -text -in $user.crt    $openssl rsa -text -in $user.key    ;;  revoke )    echo "${T_MD}CERTIFICATE REVOCATION${T_ME}"    echo ""    echo "______________________________________________________________________"    echo ""    echo "${T_MD}STEP 1: Generating revocation index for CA${T_ME}"    cat >.cfg <<EOT[ ca ]default_ca      = cca[ cca ]dir             = .certs           = .crl_dir         = .new_certs_dir   = .certificate     = ca.crtprivate_key     = ca.keydatabase        = ca.idxserial          = ca.ser.dummycrl             = ca.crlRANDFILE        = ca.rnddefault_days    = 365default_crl_days= 30default_md      = md5preserve        = yespolicy          = policy_anythingcrl_extensions  = crl_ext[ policy_anything ]countryName             = optionalstateOrProvinceName     = optionallocalityName            = optionalorganizationName        = optionalorganizationalUnitName  = optionalcommonName              = suppliedemailAddress            = optional[ crl_ext ]issuerAltName=issuer:copyEOT    cp /dev/null ca.idx    cp ca.ser ca.ser.dummy    files=""    for crt in $*; do         ser=`echo $crt | sed -e 's;^user-;;' -e 's;\.crt$;;'`        csr=`echo $crt | sed 's;\.crt$;.csr;'`        files="$files $csr"        echo "$ser: $crt"        $openssl ca -config .cfg -revoke $crt    done    echo "______________________________________________________________________"    echo ""    echo "${T_MD}STEP 2: Generating CRL for CA${T_ME} [ca.crl]"    $openssl ca -config .cfg -batch -gencrl -out ca.crl -infiles $files    rm -f .cfg    rm -f ca.idx*    rm -f ca.ser.dummy*    rm -f [0-9]*.pem    echo "______________________________________________________________________"    echo ""    echo "${T_MD}RESULT:${T_ME}"    $openssl crl -text -in ca.crl    ;;  * )    echo "cca:Error: bad argument line"    echo "cca:Usage: $0 init"    echo "cca:Usage: $0 gen"    echo "cca:Usage: $0 revoke user-XX.crt [...]"    exit 1    ;;esac##EOF##

⌨️ 快捷键说明

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