Annotation of embedaddon/axTLS/ssl/test/make_certs.sh, revision 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>