42 lines
1.3 KiB
Bash
Executable File
42 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
certs_dir="$(dirname "$0")/certs"
|
|
domain="whisper.money.local"
|
|
cert_file="${certs_dir}/${domain}.pem"
|
|
key_file="${certs_dir}/${domain}-key.pem"
|
|
|
|
mkdir -p "$certs_dir"
|
|
|
|
if command -v mkcert &> /dev/null; then
|
|
if [ ! -f "$(mkcert -CAROOT)/rootCA.pem" ]; then
|
|
echo "Installing local CA..."
|
|
mkcert -install
|
|
fi
|
|
|
|
echo "Generating certificates for ${domain}..."
|
|
mkcert -cert-file "$cert_file" -key-file "$key_file" "$domain" "*.${domain}"
|
|
echo "Certificates generated successfully!"
|
|
echo "Files created:"
|
|
echo " - ${cert_file}"
|
|
echo " - ${key_file}"
|
|
elif command -v openssl &> /dev/null; then
|
|
echo "Creating self-signed certificates (browser will show a warning)..."
|
|
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
|
|
-keyout "$key_file" \
|
|
-out "$cert_file" \
|
|
-subj "/CN=${domain}/O=Development/C=US" \
|
|
-addext "subjectAltName=DNS:${domain},DNS:*.${domain},IP:127.0.0.1" \
|
|
2>/dev/null
|
|
|
|
chmod 644 "$cert_file"
|
|
chmod 600 "$key_file"
|
|
echo "Self-signed certificates created"
|
|
echo "Note: Your browser will show a security warning."
|
|
else
|
|
echo "Error: Neither mkcert nor openssl is available"
|
|
echo "Please install mkcert (recommended) or openssl"
|
|
exit 1
|
|
fi
|