|  | #!/bin/bash | 
|  |  | 
|  | # | 
|  | # Creates or overwrites 3 files in ./res/raw: | 
|  | #   - cacert.der | 
|  | #   - userkey.der | 
|  | #   - usercert.der | 
|  | # | 
|  |  | 
|  | tmpdir=$(mktemp -d './XXXXXXXX') | 
|  | trap 'rm -r ${tmpdir}; echo; exit 1' EXIT INT QUIT | 
|  |  | 
|  | # CA_default defined in openssl.cnf | 
|  | CA_DIR='demoCA' | 
|  |  | 
|  | SUBJECT=\ | 
|  | '/C=US'\ | 
|  | '/ST=CA'\ | 
|  | '/L=Mountain View'\ | 
|  | '/O=Android'\ | 
|  | '/CN=localhost' | 
|  | PASSWORD='androidtest' | 
|  | SAN=\ | 
|  | 'DNS:localhost' | 
|  |  | 
|  | echo "Creating directory '$CA_DIR'..." | 
|  | mkdir -p "$tmpdir"/"$CA_DIR"/newcerts \ | 
|  | && echo '01' > "$tmpdir"/"$CA_DIR"/serial \ | 
|  | && touch "$tmpdir"/"$CA_DIR"/index.txt | 
|  | cat /etc/ssl/openssl.cnf <(printf "\n[SAN]\nsubjectAltName=$SAN") \ | 
|  | > "$tmpdir"/openssl.conf | 
|  |  | 
|  | echo "Generating CA certificate..." | 
|  | (cd "$tmpdir" \ | 
|  | && openssl req \ | 
|  | -new \ | 
|  | -x509 \ | 
|  | -days 3650 \ | 
|  | -extensions v3_ca \ | 
|  | -keyout 'cakey.pem' \ | 
|  | -out 'cacert.pem' \ | 
|  | -subj "$SUBJECT" \ | 
|  | -passout 'pass:'"$PASSWORD" \ | 
|  | && openssl x509 \ | 
|  | -outform DER \ | 
|  | -in 'cacert.pem' \ | 
|  | -out 'cacert.der') | 
|  |  | 
|  | echo "Generating user key..." | 
|  | (cd "$tmpdir" \ | 
|  | && openssl req \ | 
|  | -newkey rsa:2048 \ | 
|  | -sha256 \ | 
|  | -keyout 'userkey.pem' \ | 
|  | -nodes \ | 
|  | -days 3650 \ | 
|  | -out 'userkey.req' \ | 
|  | -subj "$SUBJECT" \ | 
|  | -extensions SAN \ | 
|  | -config openssl.conf \ | 
|  | && openssl pkcs8 \ | 
|  | -topk8 \ | 
|  | -outform DER \ | 
|  | -in 'userkey.pem' \ | 
|  | -out 'userkey.der' \ | 
|  | -nocrypt) | 
|  |  | 
|  | echo "Generating user certificate..." | 
|  | (cd "$tmpdir" \ | 
|  | && openssl ca \ | 
|  | -out 'usercert.pem' \ | 
|  | -in 'userkey.req' \ | 
|  | -cert 'cacert.pem' \ | 
|  | -keyfile 'cakey.pem' \ | 
|  | -days 3650 \ | 
|  | -passin 'pass:'"$PASSWORD" \ | 
|  | -extensions SAN \ | 
|  | -config openssl.conf \ | 
|  | -batch \ | 
|  | && openssl x509 \ | 
|  | -outform DER \ | 
|  | -in 'usercert.pem' \ | 
|  | -out 'usercert.der') | 
|  |  | 
|  | # Copy important files to raw resources directory | 
|  | cp \ | 
|  | "$tmpdir"/cacert.der \ | 
|  | "$tmpdir"/userkey.der \ | 
|  | "$tmpdir"/usercert.der \ | 
|  | 'res/raw/' | 
|  |  | 
|  | echo "Finished" | 
|  | exit |