summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLans Zhang <jia.zhang@windriver.com>2017-06-29 10:46:13 +0800
committerLans Zhang <jia.zhang@windriver.com>2017-06-29 10:46:13 +0800
commitad2d9c8e226c95b36f6fa9bd8ae3efd8551372ac (patch)
tree8847a8db2801baa28d08a79e0f69186c01c45bd7
parent9fd57787320ed83e470a491c7e82ca4cce0d18b7 (diff)
downloadmeta-secure-core-ad2d9c8e226c95b36f6fa9bd8ae3efd8551372ac.tar.gz
create-user-key-store.sh: restructured for self-signing and ca signing
Meanwhile, the IMA user key is signed by system user key. Signed-off-by: Lans Zhang <jia.zhang@windriver.com>
-rwxr-xr-xmeta-signing-key/scripts/create-user-key-store.sh108
1 files changed, 51 insertions, 57 deletions
diff --git a/meta-signing-key/scripts/create-user-key-store.sh b/meta-signing-key/scripts/create-user-key-store.sh
index 1d0803c..fc871a7 100755
--- a/meta-signing-key/scripts/create-user-key-store.sh
+++ b/meta-signing-key/scripts/create-user-key-store.sh
@@ -47,43 +47,48 @@ MOK_SB_KEYS_DIR="$KEYS_DIR/mok_sb_keys"
47SYSTEM_KEYS_DIR="$KEYS_DIR/system_trusted_keys" 47SYSTEM_KEYS_DIR="$KEYS_DIR/system_trusted_keys"
48IMA_KEYS_DIR="$KEYS_DIR/ima_keys" 48IMA_KEYS_DIR="$KEYS_DIR/ima_keys"
49 49
50ca_sign() {
51 local key_dir="$1"
52 local key_name="$2"
53 local ca_key_dir="$3"
54 local ca_key_name="$4"
55 local subject="$5"
56
57 # Self signing ?
58 if [ "$key_name" = "$ca_key_name" ]; then
59 openssl req -new -x509 -newkey rsa:2048 \
60 -sha256 -nodes -days 3650 \
61 -subj "$subject" \
62 -keyout "$key_dir/$key_name.key" \
63 -out "$key_dir/$key_name.crt"
64 else
65 openssl req -new -newkey rsa:2048 \
66 -sha256 -nodes \
67 -subj "$subject" \
68 -keyout "$key_dir/$key_name.key" \
69 -out "$key_dir/$key_name.csr"
70
71 openssl x509 -req -in "$key_dir/$key_name.csr" \
72 -CA "$ca_key_dir/$ca_key_name.crt" \
73 -CAkey "$ca_key_dir/$ca_key_name.key" \
74 -set_serial 1 -days 3650 \
75 -out "$key_dir/$key_name.crt"
76
77 rm -f "$key_dir/$key_name.csr"
78 fi
79}
80
50create_uefi_sb_user_keys() { 81create_uefi_sb_user_keys() {
51 local key_dir="$UEFI_SB_KEYS_DIR" 82 local key_dir="$UEFI_SB_KEYS_DIR"
52 83
53 [ ! -d "$key_dir" ] && mkdir -p "$key_dir" 84 [ ! -d "$key_dir" ] && mkdir -p "$key_dir"
54 85
55 # PK is self-signed. 86 ca_sign "$key_dir" PK "$key_dir" PK \
56 openssl req -new -x509 -newkey rsa:2048 \ 87 "/CN=PK Certificate for $USER@`hostname`/"
57 -sha256 -nodes -days 3650 \ 88 ca_sign "$key_dir" KEK "$key_dir" PK \
58 -subj "/CN=PK Certificate for $USER@`hostname`/" \ 89 "/CN=KEK Certificate for $USER@`hostname`"
59 -keyout "$key_dir/PK.key" \ 90 ca_sign "$key_dir" DB "$key_dir" KEK \
60 -out "$key_dir/PK.pem" 91 "/CN=DB Certificate for $USER@`hostname`"
61
62 # KEK is signed by PK.
63 openssl req -new -newkey rsa:2048 \
64 -sha256 -nodes \
65 -subj "/CN=KEK Certificate for $USER@`hostname`" \
66 -keyout "$key_dir/KEK.key" \
67 -out "$key_dir/KEK.csr"
68
69 openssl x509 -req -in "$key_dir/KEK.csr" \
70 -CA "$key_dir/PK.pem" -CAkey "$key_dir/PK.key" \
71 -set_serial 1 -days 3650 -out "$key_dir/KEK.pem"
72
73 rm -f "$key_dir/KEK.csr"
74
75 # DB is signed by KEK.
76 openssl req -new -newkey rsa:2048 \
77 -sha256 -nodes \
78 -subj "/CN=DB Certificate for $USER@`hostname`" \
79 -keyout "$key_dir/DB.key" \
80 -out "$key_dir/DB.csr"
81
82 openssl x509 -req -in "key_dir/DB.csr" \
83 -CA "$key_dir/KEK.pem" -CAkey "$key_dir/KEK.key" \
84 -set_serial 1 -days 3650 -out "$key_dir/DB.pem"
85
86 rm -f "$key_dir/DB.csr"
87} 92}
88 93
89create_mok_sb_user_keys() { 94create_mok_sb_user_keys() {
@@ -91,39 +96,28 @@ create_mok_sb_user_keys() {
91 96
92 [ ! -d "$key_dir" ] && mkdir -p "$key_dir" 97 [ ! -d "$key_dir" ] && mkdir -p "$key_dir"
93 98
94 openssl req -new -x509 -newkey rsa:2048 \ 99 ca_sign "$key_dir" shim_cert "$key_dir" shim_cert \
95 -sha256 -nodes -days 3650 \ 100 "/CN=Shim Certificate for $USER@`hostname`/"
96 -subj "/CN=Shim Certificate for $USER@`hostname`/" \ 101 ca_sign "$key_dir" vendor_cert "$key_dir" vendor_cert \
97 -keyout "$key_dir/shim_cert.key" -out "$key_dir/shim_cert.pem" 102 "/CN=Vendor Certificate for $USER@`hostname`/"
98
99 openssl req -new -x509 -newkey rsa:2048 \
100 -sha256 -nodes -days 3650 \
101 -subj "/CN=Vendor Certificate for $USER@`hostname`/" \
102 -keyout "$key_dir/vendor_cert.key" -out "$key_dir/vendor_cert.pem"
103} 103}
104 104
105create_system_trusted_keys() { 105create_system_user_key() {
106 local key_dir="$SYSTEM_KEYS_DIR" 106 local key_dir="$SYSTEM_KEYS_DIR"
107 107
108 [ ! -d "$key_dir" ] && mkdir -p "$key_dir" 108 [ ! -d "$key_dir" ] && mkdir -p "$key_dir"
109 109
110 openssl req -new -x509 -newkey rsa:2048 \ 110 ca_sign "$key_dir" system_trusted_key "$key_dir" system_trusted_key \
111 -sha256 -nodes -days 3650 \ 111 "/CN=System Trusted Certificate for $USER@`hostname`/"
112 -subj "/CN=System Trusted Certificate/" \
113 -keyout "$key_dir/system_trusted_key.key" \
114 -out "$key_dir/system_trusted_key.pem"
115} 112}
116 113
117create_ima_user_keys() { 114create_ima_user_key() {
118 local key_dir="$IMA_KEYS_DIR" 115 local key_dir="$IMA_KEYS_DIR"
119 116
120 [ ! -d "$key_dir" ] && mkdir -p "$key_dir" 117 [ ! -d "$key_dir" ] && mkdir -p "$key_dir"
121 118
122 openssl req -new -x509 -newkey rsa:2048 \ 119 ca_sign "$key_dir" x509_ima "$SYSTEM_KEYS_DIR" system_trusted_key \
123 -sha256 -nodes -days 3650 \ 120 "/CN=IMA Trusted Certificate for $USER@`hostname`/"
124 -subj "/CN=IMA Trusted Certificate/" \
125 -keyout "$key_dir/x509_ima.key" \
126 -outform DER -out "$key_dir/x509_ima.der"
127} 121}
128 122
129create_user_keys() { 123create_user_keys() {
@@ -133,11 +127,11 @@ create_user_keys() {
133 echo "Creating the user keys for MOK Secure Boot" 127 echo "Creating the user keys for MOK Secure Boot"
134 create_mok_sb_user_keys 128 create_mok_sb_user_keys
135 129
136 echo "Creating the system trusted keys" 130 echo "Creating the user key for system"
137 create_system_trusted_keys 131 create_system_user_key
138 132
139 echo "Creating the user keys for IMA appraisal" 133 echo "Creating the user key for IMA appraisal"
140 create_ima_user_keys 134 create_ima_user_key
141} 135}
142 136
143create_user_keys 137create_user_keys