selfsigned certs
This commit is contained in:
72
selfsigned_certs.sh
Normal file
72
selfsigned_certs.sh
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# selfsigned.sh — create a long-lived self-signed cert with SANs
|
||||||
|
# Usage: sudo ./selfsigned.sh [days] [outdir]
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Prompt for domain if not provided
|
||||||
|
read -rp "Enter the domain (e.g., panel.example.com): " DOMAIN
|
||||||
|
if [[ -z "$DOMAIN" ]]; then
|
||||||
|
echo "Domain cannot be empty." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
DAYS="${1:-36500}" # Default: 100 years
|
||||||
|
OUTDIR="${2:-/etc/ssl/selfsigned/$DOMAIN}"
|
||||||
|
|
||||||
|
command -v openssl >/dev/null 2>&1 || { echo "openssl is required"; exit 1; }
|
||||||
|
|
||||||
|
mkdir -p "$OUTDIR"
|
||||||
|
chmod 700 "$OUTDIR"
|
||||||
|
|
||||||
|
CONF="$OUTDIR/openssl.cnf"
|
||||||
|
KEY="$OUTDIR/$DOMAIN.key"
|
||||||
|
CRT="$OUTDIR/$DOMAIN.crt"
|
||||||
|
PEM="$OUTDIR/$DOMAIN.pem"
|
||||||
|
|
||||||
|
cat > "$CONF" <<EOF
|
||||||
|
[req]
|
||||||
|
default_bits = 4096
|
||||||
|
prompt = no
|
||||||
|
default_md = sha256
|
||||||
|
distinguished_name = dn
|
||||||
|
x509_extensions = v3_req
|
||||||
|
|
||||||
|
[dn]
|
||||||
|
C = US
|
||||||
|
O = Self-Signed
|
||||||
|
OU = IT
|
||||||
|
CN = ${DOMAIN}
|
||||||
|
|
||||||
|
[v3_req]
|
||||||
|
basicConstraints = critical, CA:false
|
||||||
|
keyUsage = critical, digitalSignature, keyEncipherment
|
||||||
|
extendedKeyUsage = serverAuth
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
DNS.1 = ${DOMAIN}
|
||||||
|
DNS.2 = *.${DOMAIN}
|
||||||
|
IP.1 = 127.0.0.1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Generate key + cert
|
||||||
|
openssl req -x509 -nodes -newkey rsa:4096 \
|
||||||
|
-days "$DAYS" \
|
||||||
|
-keyout "$KEY" \
|
||||||
|
-out "$CRT" \
|
||||||
|
-config "$CONF"
|
||||||
|
|
||||||
|
# Combined PEM (useful for HAProxy, some tools)
|
||||||
|
cat "$CRT" "$KEY" > "$PEM"
|
||||||
|
chmod 600 "$KEY" "$CRT" "$PEM"
|
||||||
|
|
||||||
|
echo "✅ Self-signed certificate created:"
|
||||||
|
echo " Cert : $CRT"
|
||||||
|
echo " Key : $KEY"
|
||||||
|
echo " PEM : $PEM"
|
||||||
|
echo " Conf : $CONF"
|
||||||
|
echo
|
||||||
|
echo "📌 Add this to your nginx config:"
|
||||||
|
echo " ssl_certificate $CRT;"
|
||||||
|
echo " ssl_certificate_key $KEY;"
|
||||||
Reference in New Issue
Block a user