diff options
Diffstat (limited to 'certs/sample/gen-certs.sh')
-rwxr-xr-x | certs/sample/gen-certs.sh | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/certs/sample/gen-certs.sh b/certs/sample/gen-certs.sh new file mode 100755 index 0000000..f0aa135 --- /dev/null +++ b/certs/sample/gen-certs.sh @@ -0,0 +1,78 @@ +#!/bin/sh +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. + +ORG="/C=FR/ST=Brittany/L=Lorient/O=IoT.bzh" + +cat > extensions << EOC +[root] +basicConstraints=CA:TRUE +keyUsage=keyCertSign +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid +[derivate] +basicConstraints=CA:TRUE +keyUsage=keyCertSign,digitalSignature +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid +EOC + +keyof() { echo -n "$1.key.pem"; } +certof() { echo -n "$1.cert.pem"; } + +generate() { + +local s="$1" n="$2" cn="$3" sig="$4" +local key="$(keyof "$n")" cert="$(certof "$n")" + +if [ ! -f "$key" ] +then + echo + echo "generation of the $n key" + openssl genpkey \ + -algorithm RSA -pkeyopt rsa_keygen_bits:4096 \ + -outform PEM \ + -out "$key" +fi + +if [ ! -f "$cert" -o "$key" -nt "$cert" ] +then + echo + echo "generation of the $n certificate" + openssl req -new \ + -key "$key" \ + -subj "$ORG/CN=$cn" | + openssl x509 -req \ + -days 3653 \ + -sha256 \ + -extfile extensions \ + -trustout \ + $sig \ + -set_serial $s \ + -setalias "$cn" \ + -out "$cert" +fi + +} + +genroot() { + local s="$1" n="$2" cn="$3" + generate "$s" "$n" "$cn" "-signkey $(keyof "$n") -extensions root" +} + +derivate() { + local s="$1" n="$2" cn="$3" i="$4" + generate "$s" "$n" "$cn" "-CA $(certof "$i") -CAkey $(keyof "$i") -extensions derivate" +} + + +genroot 1 root "Root certificate" +derivate 2 developer "Root developer" root +derivate 3 platform "Root platform" root +derivate 4 partner "Root partner" root +derivate 5 public "Root public" root + +rm extensions |