diff options
| author | Lans Zhang <jia.zhang@windriver.com> | 2017-06-29 10:46:13 +0800 |
|---|---|---|
| committer | Lans Zhang <jia.zhang@windriver.com> | 2017-06-29 10:46:13 +0800 |
| commit | ad2d9c8e226c95b36f6fa9bd8ae3efd8551372ac (patch) | |
| tree | 8847a8db2801baa28d08a79e0f69186c01c45bd7 | |
| parent | 9fd57787320ed83e470a491c7e82ca4cce0d18b7 (diff) | |
| download | meta-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-x | meta-signing-key/scripts/create-user-key-store.sh | 108 |
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" | |||
| 47 | SYSTEM_KEYS_DIR="$KEYS_DIR/system_trusted_keys" | 47 | SYSTEM_KEYS_DIR="$KEYS_DIR/system_trusted_keys" |
| 48 | IMA_KEYS_DIR="$KEYS_DIR/ima_keys" | 48 | IMA_KEYS_DIR="$KEYS_DIR/ima_keys" |
| 49 | 49 | ||
| 50 | ca_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 | |||
| 50 | create_uefi_sb_user_keys() { | 81 | create_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 | ||
| 89 | create_mok_sb_user_keys() { | 94 | create_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 | ||
| 105 | create_system_trusted_keys() { | 105 | create_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 | ||
| 117 | create_ima_user_keys() { | 114 | create_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 | ||
| 129 | create_user_keys() { | 123 | create_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 | ||
| 143 | create_user_keys | 137 | create_user_keys |
