flatcar-scripts/mod_for_test_scripts/710enableAuthTesting
Justin Neddo 6b5b16b8fe Generate fake root certs for autotest via qemu
mod_image_for_test.sh now passes the target architecture to the subscripts
mod_for_test_scripts/710enableAuthTesting generates the /etc/fake_root_cert
databases by running nsscertutil under QEMU.

BUG=3310
TEST=Built autotest enabled images for x86 and arm.  On arm, the browser no
longer crashes trying to read the fake root certs.

Review URL: http://codereview.chromium.org/2878033
2010-07-22 10:17:03 -05:00

59 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
echo "Adding mock Google Accounts server certs."
case "${ARCH}" in
arm*)
QEMU="qemu-arm"
;;
*86)
QEMU="qemu-i386"
;;
*)
error "Invalid ARCH: ${ARCH}"
exit 1
esac
cp "/usr/bin/${QEMU}" "${ROOT_FS_DIR}/tmp"
CERT_NAME="mock_server"
FAKE_CA_DIR="/etc/fake_root_ca"
FAKE_NSSDB="${FAKE_CA_DIR}/nssdb"
TMP_KEY=$(mktemp -p /tmp "${CERT_NAME}.key.XXXXX")
TMP_CERT=$(mktemp -p /tmp "${CERT_NAME}.pem.XXXXX")
mv -f "${TMP_KEY}" "${ROOT_FS_DIR}/${TMP_KEY}"
mv -f "${TMP_CERT}" "${ROOT_FS_DIR}/${TMP_CERT}"
# Generate testing root cert on the fly.
sudo chroot "${ROOT_FS_DIR}" "/tmp/${QEMU}" /usr/bin/openssl req -x509 -days 2 \
-subj "/CN=www.google.com" \
-newkey rsa:1024 -nodes -keyout "${TMP_KEY}" -out "${TMP_CERT}"
mkdir -m 0755 -p "${ROOT_FS_DIR}/${FAKE_NSSDB}"
sudo chroot "${ROOT_FS_DIR}" "/tmp/${QEMU}" \
/usr/local/bin/nsscertutil -d sql:"${FAKE_NSSDB}" -N -f <(echo "")
cp "${ROOT_FS_DIR}/${TMP_KEY}" "${ROOT_FS_DIR}/${FAKE_CA_DIR}/${CERT_NAME}.key"
cp "${ROOT_FS_DIR}/${TMP_CERT}" "${ROOT_FS_DIR}/${FAKE_CA_DIR}/${CERT_NAME}.pem"
echo "DO NOT MOVE THIS DATA OFF OF THE ROOTFS!" > "${ROOT_FS_DIR}/${FAKE_CA_DIR}/README"
sudo chroot "${ROOT_FS_DIR}" "/tmp/${QEMU}" \
/usr/local/bin/nsscertutil -d sql:"${FAKE_NSSDB}" -A \
-n FakeCert -t "C,," -a -i "${FAKE_CA_DIR}/${CERT_NAME}.pem"
chmod 0644 "${ROOT_FS_DIR}/${FAKE_NSSDB}"/*
# TODO(cmasone): get rid of this once we're off pam_google for good.
# Sadly, our fake cert HAS to be first in this file.
TMPFILE=$(mktemp)
CERT_FILE="${ROOT_FS_DIR}/etc/login_trust_root.pem"
PERMS=$(stat --printf="%a" "${CERT_FILE}")
cat "${ROOT_FS_DIR}/${TMP_CERT}" "${CERT_FILE}" > "${TMPFILE}"
mv -f "${TMPFILE}" "${CERT_FILE}"
chmod "${PERMS}" "${CERT_FILE}"
rm "${ROOT_FS_DIR}/tmp/${QEMU}"
rm "${ROOT_FS_DIR}/${TMP_KEY}"
rm "${ROOT_FS_DIR}/${TMP_CERT}"