#!/usr/bin/env bash # Conditionally installs custom SSL certificates from CERTIFICATE_URLS environment variable. set -o nounset set -o errexit set -o pipefail IFS=$'\n\t' DEFAULT_ROOT="/etc/ssl/certs" CUSTOM_ROOT="/usr/local/share/ca-certificates" if [[ -z "${CERTIFICATE_URLS:-}" ]]; then printf "%s: Skipped, CERTIFICATE_URLS is empty.\n" "${0}" exit 0 fi printf "%s\n" "Installing custom SSL certificates..." IFS=',' read -ra urls <<< "${CERTIFICATE_URLS}" for url in "${urls[@]}"; do # Trim whitespace. url=$(printf "%s" "${url}" | xargs) if [ -z "${url}" ]; then continue fi printf "%s\n" "Downloading certificate: ${url}." base_name=$(basename "${url}") file_name="${base_name%.*}.crt" install_path="${CUSTOM_ROOT}/${file_name}" if curl --fail --silent --show-error --location "${url}" --output "$install_path"; then printf "%s\n" "Downloaded ${url} to $install_path." else printf "%s\n" "ERROR: Failed to download from ${url}." exit 1 fi done printf "%s\n" "Updating CA certificates..." update-ca-certificates if [[ -d "$DEFAULT_ROOT" && -z "$(ls -A "$DEFAULT_ROOT")" ]]; then printf "%s\n" "ERROR: No certificates exist!" exit 1 fi printf "%s\n" "Custom SSL certificates installed successfully."