lin
2025-08-01 633231e833e21d5b8b1c00cb15aedb62b3b78e8f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/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