#!/usr/bin/env bash set -euo pipefail if [[ $# -lt 1 ]]; then echo "Usage: $0 [days]" exit 1 fi CLIENT_NAME="$1" DAYS="${2:-825}" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" TRAEFIK_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" CA_DIR="${TRAEFIK_ROOT}/certs/ca" CLIENT_DIR="${TRAEFIK_ROOT}/certs/clients/${CLIENT_NAME}" CA_KEY="${CA_DIR}/clients-ca.key" CA_CERT="${CA_DIR}/clients-ca.crt" CA_SERIAL="${CA_DIR}/clients-ca.srl" CLIENT_KEY="${CLIENT_DIR}/${CLIENT_NAME}.key" CLIENT_CSR="${CLIENT_DIR}/${CLIENT_NAME}.csr" CLIENT_CERT="${CLIENT_DIR}/${CLIENT_NAME}.crt" CLIENT_P12="${CLIENT_DIR}/${CLIENT_NAME}.p12" OPENSSL_EXT="${CLIENT_DIR}/client.ext" if [[ ! -f "${CA_KEY}" || ! -f "${CA_CERT}" ]]; then echo "Missing CA material. Run init-mtls-ca.sh first." exit 1 fi if [[ -d "${CLIENT_DIR}" ]]; then echo "Client directory already exists (${CLIENT_DIR}); refusing to overwrite." exit 1 fi mkdir -p "${CLIENT_DIR}" chmod 700 "${CLIENT_DIR}" cat > "${OPENSSL_EXT}" <