Overview
| Comment: | Added script to generate certificate bundles in heirarchy order |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | piv |
| Files: | files | file ages | folders |
| SHA1: |
6a498362245e8ece07a24661a6ef162c |
| User & Date: | rkeene on 2013-02-07 23:29:48 |
| Other Links: | branch diff | manifest | tags |
Context
|
2013-08-03
| ||
| 02:19 | Added support for outputting NetScaler cert configuration check-in: c46c2cd501 user: rkeene tags: piv | |
|
2013-02-07
| ||
| 23:29 | Added script to generate certificate bundles in heirarchy order check-in: 6a49836224 user: rkeene tags: piv | |
|
2013-01-16
| ||
| 15:46 | Updated macbuild contact information to have valid government email addresses to contact us. check-in: f42b92cf98 user: kvanals tags: piv | |
Changes
Added build/certs/build-tree.sh version [ffb492c540].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 94 95 96 97 98 99 100 101 102 103 |
#! /bin/bash
opt_mode='showcert'
if [ -n "$1" ]; then
opt_mode="$1"
fi
unset sh_list tree
for cert in *.crt; do
ih="$(openssl x509 -in "${cert}" -noout -issuer_hash)"
sh="$(openssl x509 -in "${cert}" -noout -subject_hash)"
sh_list=("${sh_list[@]}" "${sh} ${cert}")
tree=("${tree[@]}" "${sh} ${ih}")
done
function subjecthash_to_filename() {
local hash
local sh_cert hash_chk cert
hash="$1"
for sh_cert in "${sh_list[@]}"; do
hash_chk="$(echo "${sh_cert}" | cut -f 1 -d ' ')"
if [ "${hash_chk}" = "${hash}" ]; then
cert="$(echo "${sh_cert}" | cut -f 2- -d ' ')"
echo "${cert}"
return
fi
done
return
}
function print_cert() {
local cert
local sh ih i_cert
cert="$1"
ih="$(openssl x509 -in "${cert}" -noout -issuer_hash)"
sh="$(openssl x509 -in "${cert}" -noout -subject_hash)"
i_cert="$(subjecthash_to_filename "${ih}")"
if [ "${i_cert}" != "${cert}" ]; then
print_cert "${i_cert}"
fi
echo "${cert}"
}
idx=0
unset certs
for cert in *.crt; do
print_cert "${cert}"
done | while read cert; do
is_dupe='0'
for chk_cert in "${certs[@]}"; do
if [ "${chk_cert}" = "${cert}" ]; then
is_dupe='1'
break
fi
done
if [ "${is_dupe}" = '1' ]; then
continue
fi
certs=("${certs[@]}" "${cert}")
echo "${cert}"
done | while read cert; do
case "${opt_mode}" in
showcert)
openssl x509 -in "${cert}" -text
;;
showfile)
echo "${cert}"
;;
script)
i_cert="$(subjecthash_to_filename "$(openssl x509 -in "${cert}" -issuer_hash -noout)")"
s_idx="$(openssl x509 -in "${cert}" -outform der | openssl sha1 | sed 's@.*= *@@' | cut -c 1-10)"
s_shortsubject="$(openssl x509 -in "${cert}" -subject -noout | sed 's@.*=@@' | cut -c 1-20)"
s_normsubject="$(echo "${s_shortsubject}" | sed 's@ @@g' | dd conv=lcase 2>/dev/null)"
s_filename="federal-${s_normsubject}-${s_idx}.crt"
i_idx="$(openssl x509 -in "${i_cert}" -outform der | openssl sha1 | sed 's@.*= *@@' | cut -c 1-10)"
i_shortsubject="$(openssl x509 -in "${i_cert}" -subject -noout | sed 's@.*=@@' | cut -c 1-20)"
i_normsubject="$(echo "${i_shortsubject}" | sed 's@ @@g' | dd conv=lcase 2>/dev/null)"
i_filename="federal-${i_normsubject}-${i_idx}.crt"
echo "cat << \_EOF_ > '${s_filename}'"
openssl x509 -in "${cert}"
echo "_EOF_"
;;
esac
done
|
Modified build/certs/dod/Makefile from [678511107e] to [5a8397c00a].
|
| > > | > > > > > | 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 |
all: certs USG-dod-bundle.pem
certs: cert-0.crt
rel3_dodroot_2048.cac:
wget -O "$@.new" http://dodpki.c3pki.chamb.disa.mil/rel3_dodroot_2048.cac
mv "$@.new" "$@"
cert-%.crt: rel3_dodroot_2048.cac
idx=0; \
( \
openssl pkcs7 -in rel3_dodroot_2048.cac -inform DER -print_certs -text; \
) | while IFS='' read -r line; do \
if [ -z "$${line}" ]; then \
continue; \
fi; \
echo "$${line}" >> "cert-$${idx}.crt"; \
if [ "$${line}" == "-----END CERTIFICATE-----" ]; then \
idx=$$[$$idx + 1]; \
fi; \
done
USG-dod-bundle.pem: certs
../build-tree.sh > "$@"
clean:
rm -f cert-*.crt
rm -f rel3_dodroot_2048.cac.new
distclean: clean
rm -f rel3_dodroot_2048.cac
.PHONY: all certs
|
Modified build/certs/federal/Makefile from [7088ba1ceb] to [c15ccd8551].
|
| > > | | 1 2 3 4 5 6 7 8 9 10 | all: certs USG-federal-bundle.pem certs: cert-1.crt CPCA_TRCA.crt CommonPolicy.crt grep -l 'Issuer: C=US, O=U.S. Government, OU=FPKI, CN=Federal Bridge CA' *.crt | xargs rm -f grep -l 'Subject: C=US, O=U.S. Government, OU=FPKI, CN=Federal Common Policy CA' *.crt | xargs grep -H 'Issuer:' | grep -v 'Issuer: C=us, O=U.S. Government, OU=FBCA, CN=Common Policy' | cut -f 1 -d : | xargs rm -f CPCA_TRCA.crt: wget -O - --no-check-certificate https://pki.treas.gov/CPCA_TRCA.cer | openssl x509 -text > "$@.new" mv "$@.new" "$@" |
| ︙ | ︙ | |||
29 30 31 32 33 34 35 36 |
fi; \
echo "$${line}" >> "cert-$${idx}.crt"; \
if [ "$${line}" == "-----END CERTIFICATE-----" ]; then \
idx=$$[$$idx + 1]; \
fi; \
done
clean:
| > > > | > > | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
fi; \
echo "$${line}" >> "cert-$${idx}.crt"; \
if [ "$${line}" == "-----END CERTIFICATE-----" ]; then \
idx=$$[$$idx + 1]; \
fi; \
done
USG-federal-bundle.pem: certs
../build-tree.sh > "$@"
clean:
rm -f cert-*.crt USG-federal-bundle.pem
rm -f CPCA_TRCA.crt.new root_sia.p7b.new caCertsIssuedTofcpca.p7c.new CommonPolicy.crt.new
distclean: clean
rm -f CPCA_TRCA.crt root_sia.p7b caCertsIssuedTofcpca.p7c CommonPolicy.crt
.PHONY: all certs
|