Annotation of embedaddon/axTLS/ssl/test/make_certs.sh, revision 1.1.1.1

1.1       misho       1: #!/bin/sh
                      2: 
                      3: #
                      4: # Copyright (c) 2007, Cameron Rich
                      5: #
                      6: # All rights reserved.
                      7: #
                      8: # Redistribution and use in source and binary forms, with or without
                      9: # modification, are permitted provided that the following conditions are met:
                     10: #
                     11: # * Redistributions of source code must retain the above copyright notice,
                     12: #   this list of conditions and the following disclaimer.
                     13: # * Redistributions in binary form must reproduce the above copyright
                     14: #   notice, this list of conditions and the following disclaimer in the
                     15: #   documentation and/or other materials provided with the distribution.
                     16: # * Neither the name of the axTLS project nor the names of its
                     17: #   contributors may be used to endorse or promote products derived
                     18: #   from this software without specific prior written permission.
                     19: #
                     20: # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
                     21: # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
                     22: # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
                     23: # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
                     24: # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
                     25: # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
                     26: # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     27: # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
                     28: # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
                     29: # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     30: # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     31: #
                     32: 
                     33: #
                     34: # Generate the certificates and keys for testing.
                     35: #
                     36: 
                     37: PROJECT_NAME="axTLS Project"
                     38: 
                     39: # Generate the openssl configuration files.
                     40: cat > ca_cert.conf << EOF  
                     41: [ req ]
                     42: distinguished_name     = req_distinguished_name
                     43: prompt                 = no
                     44: 
                     45: [ req_distinguished_name ]
                     46:  O                      = $PROJECT_NAME Dodgy Certificate Authority
                     47: EOF
                     48: 
                     49: cat > certs.conf << EOF  
                     50: [ req ]
                     51: distinguished_name     = req_distinguished_name
                     52: prompt                 = no
                     53: 
                     54: [ req_distinguished_name ]
                     55:  O                      = $PROJECT_NAME
                     56:  CN                     = 127.0.0.1
                     57: EOF
                     58: 
                     59: cat > device_cert.conf << EOF  
                     60: [ req ]
                     61: distinguished_name     = req_distinguished_name
                     62: prompt                 = no
                     63: 
                     64: [ req_distinguished_name ]
                     65:  O                      = $PROJECT_NAME Device Certificate
                     66: EOF
                     67: 
                     68: # private key generation
                     69: openssl genrsa -out axTLS.ca_key.pem 1024
                     70: openssl genrsa -out axTLS.key_512.pem 512
                     71: openssl genrsa -out axTLS.key_1024.pem 1024
                     72: openssl genrsa -out axTLS.key_1042.pem 1042
                     73: openssl genrsa -out axTLS.key_2048.pem 2048
                     74: openssl genrsa -out axTLS.key_4096.pem 4096
                     75: openssl genrsa -out axTLS.device_key.pem 1024
                     76: openssl genrsa -aes128 -passout pass:abcd -out axTLS.key_aes128.pem 512
                     77: openssl genrsa -aes256 -passout pass:abcd -out axTLS.key_aes256.pem 512
                     78: 
                     79: 
                     80: # convert private keys into DER format
                     81: openssl rsa -in axTLS.key_512.pem -out axTLS.key_512 -outform DER
                     82: openssl rsa -in axTLS.key_1024.pem -out axTLS.key_1024 -outform DER
                     83: openssl rsa -in axTLS.key_1042.pem -out axTLS.key_1042 -outform DER
                     84: openssl rsa -in axTLS.key_2048.pem -out axTLS.key_2048 -outform DER
                     85: openssl rsa -in axTLS.key_4096.pem -out axTLS.key_4096 -outform DER
                     86: openssl rsa -in axTLS.device_key.pem -out axTLS.device_key -outform DER
                     87: 
                     88: # cert requests
                     89: openssl req -out axTLS.ca_x509.req -key axTLS.ca_key.pem -new \
                     90:             -config ./ca_cert.conf 
                     91: openssl req -out axTLS.x509_512.req -key axTLS.key_512.pem -new \
                     92:             -config ./certs.conf 
                     93: openssl req -out axTLS.x509_1024.req -key axTLS.key_1024.pem -new \
                     94:             -config ./certs.conf 
                     95: openssl req -out axTLS.x509_1042.req -key axTLS.key_1042.pem -new \
                     96:             -config ./certs.conf 
                     97: openssl req -out axTLS.x509_2048.req -key axTLS.key_2048.pem -new \
                     98:             -config ./certs.conf 
                     99: openssl req -out axTLS.x509_4096.req -key axTLS.key_4096.pem -new \
                    100:             -config ./certs.conf 
                    101: openssl req -out axTLS.x509_device.req -key axTLS.device_key.pem -new \
                    102:             -config ./device_cert.conf
                    103: openssl req -out axTLS.x509_aes128.req -key axTLS.key_aes128.pem \
                    104:             -new -config ./certs.conf -passin pass:abcd
                    105: openssl req -out axTLS.x509_aes256.req -key axTLS.key_aes256.pem \
                    106:             -new -config ./certs.conf -passin pass:abcd
                    107: 
                    108: # generate the actual certs.
                    109: openssl x509 -req -in axTLS.ca_x509.req -out axTLS.ca_x509.pem \
                    110:             -sha1 -days 5000 -signkey axTLS.ca_key.pem
                    111: openssl x509 -req -in axTLS.x509_512.req -out axTLS.x509_512.pem \
                    112:             -sha1 -CAcreateserial -days 5000 \
                    113:             -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
                    114: openssl x509 -req -in axTLS.x509_1024.req -out axTLS.x509_1024.pem \
                    115:             -sha1 -CAcreateserial -days 5000 \
                    116:             -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
                    117: openssl x509 -req -in axTLS.x509_1042.req -out axTLS.x509_1042.pem \
                    118:             -sha1 -CAcreateserial -days 5000 \
                    119:             -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
                    120: openssl x509 -req -in axTLS.x509_2048.req -out axTLS.x509_2048.pem \
                    121:             -md5 -CAcreateserial -days 5000 \
                    122:             -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
                    123: openssl x509 -req -in axTLS.x509_4096.req -out axTLS.x509_4096.pem \
                    124:             -md5 -CAcreateserial -days 5000 \
                    125:             -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
                    126: openssl x509 -req -in axTLS.x509_device.req -out axTLS.x509_device.pem \
                    127:             -sha1 -CAcreateserial -days 5000 \
                    128:             -CA axTLS.x509_512.pem -CAkey axTLS.key_512.pem
                    129: openssl x509 -req -in axTLS.x509_aes128.req \
                    130:             -out axTLS.x509_aes128.pem \
                    131:             -sha1 -CAcreateserial -days 5000 \
                    132:             -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
                    133: openssl x509 -req -in axTLS.x509_aes256.req \
                    134:             -out axTLS.x509_aes256.pem \
                    135:             -sha1 -CAcreateserial -days 5000 \
                    136:             -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
                    137: 
                    138: # note: must be root to do this
                    139: DATE_NOW=`date`
                    140: if date -s "Jan 1 2025"; then
                    141: openssl x509 -req -in axTLS.x509_512.req -out axTLS.x509_bad_before.pem \
                    142:             -sha1 -CAcreateserial -days 365 \
                    143:             -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
                    144: date -s "$DATE_NOW"
                    145: touch axTLS.x509_bad_before.pem
                    146: fi
                    147: openssl x509 -req -in axTLS.x509_512.req -out axTLS.x509_bad_after.pem \
                    148:             -sha1 -CAcreateserial -days -365 \
                    149:             -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem
                    150: 
                    151: # some cleanup
                    152: rm axTLS*.req
                    153: rm axTLS.srl
                    154: rm *.conf
                    155: 
                    156: # need this for the client tests
                    157: openssl x509 -in axTLS.ca_x509.pem -outform DER -out axTLS.ca_x509.cer 
                    158: openssl x509 -in axTLS.x509_512.pem -outform DER -out axTLS.x509_512.cer
                    159: openssl x509 -in axTLS.x509_1024.pem -outform DER -out axTLS.x509_1024.cer
                    160: openssl x509 -in axTLS.x509_1042.pem -outform DER -out axTLS.x509_1042.cer
                    161: openssl x509 -in axTLS.x509_2048.pem -outform DER -out axTLS.x509_2048.cer
                    162: openssl x509 -in axTLS.x509_4096.pem -outform DER -out axTLS.x509_4096.cer
                    163: openssl x509 -in axTLS.x509_device.pem -outform DER -out axTLS.x509_device.cer
                    164: 
                    165: # generate pkcs8 files (use RC4-128 for encryption)
                    166: openssl pkcs8 -in axTLS.key_512.pem -passout pass:abcd -topk8 -v1 PBE-SHA1-RC4-128 -out axTLS.encrypted_pem.p8
                    167: openssl pkcs8 -in axTLS.key_512.pem -passout pass:abcd -topk8 -outform DER -v1 PBE-SHA1-RC4-128 -out axTLS.encrypted.p8
                    168: openssl pkcs8 -in axTLS.key_512.pem -nocrypt -topk8 -out axTLS.unencrypted_pem.p8
                    169: openssl pkcs8 -in axTLS.key_512.pem -nocrypt -topk8 -outform DER -out axTLS.unencrypted.p8
                    170: 
                    171: # generate pkcs12 files (use RC4-128 for encryption)
                    172: openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem -certfile axTLS.ca_x509.pem -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 -name "p12_with_CA" -out axTLS.withCA.p12 -password pass:abcd
                    173: openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 -name "p12_without_CA" -out axTLS.withoutCA.p12 -password pass:abcd
                    174: openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 -out axTLS.noname.p12 -password pass:abcd
                    175: 
                    176: # PEM certificate chain
                    177: cat axTLS.ca_x509.pem >> axTLS.x509_device.pem
                    178: 
                    179: # set default key/cert for use in the server
                    180: xxd -i axTLS.x509_1024.cer | sed -e \
                    181:         "s/axTLS_x509_1024_cer/default_certificate/" > ../../ssl/cert.h
                    182: xxd -i axTLS.key_1024 | sed -e \
                    183:         "s/axTLS_key_1024/default_private_key/" > ../../ssl/private_key.h

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>