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
 |