mirror of
https://github.com/nicoverbruggen/phpmon.git
synced 2025-12-21 19:20:06 +01:00
61 lines
1.8 KiB
Bash
Executable File
61 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Configuration
|
|
DOMAIN="${1:-test.test}"
|
|
VALET_CA_DIR="$HOME/.config/valet/CA"
|
|
VALET_CERT_DIR="$HOME/.config/valet/Certificates"
|
|
|
|
# Check if Valet CA exists
|
|
if [ ! -f "$VALET_CA_DIR/LaravelValetCASelfSigned.pem" ]; then
|
|
echo "Error: Valet CA not found at $VALET_CA_DIR"
|
|
echo "Make sure Laravel Valet is installed and secured."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Generating expired certificate for: $DOMAIN"
|
|
|
|
# Generate private key for the domain
|
|
openssl genrsa -out "$VALET_CERT_DIR/$DOMAIN.key" 2048
|
|
|
|
# Create certificate signing request (CSR)
|
|
openssl req -new -key "$VALET_CERT_DIR/$DOMAIN.key" \
|
|
-out "/tmp/$DOMAIN.csr" \
|
|
-subj "/C=US/ST=Test/L=Test/O=Laravel Valet/CN=$DOMAIN"
|
|
|
|
# Create extension file for SAN (Subject Alternative Name)
|
|
cat > "/tmp/$DOMAIN.ext" << EOF
|
|
authorityKeyIdentifier=keyid,issuer
|
|
basicConstraints=CA:FALSE
|
|
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
|
subjectAltName = @alt_names
|
|
|
|
[alt_names]
|
|
DNS.1 = $DOMAIN
|
|
DNS.2 = *.$DOMAIN
|
|
EOF
|
|
|
|
# Use faketime to generate certificate with past dates
|
|
# Certificate valid from Jan 1, 2023 to Jan 2, 2023 (expired)
|
|
faketime '2023-01-01' openssl x509 -req \
|
|
-in "/tmp/$DOMAIN.csr" \
|
|
-CA "$VALET_CA_DIR/LaravelValetCASelfSigned.pem" \
|
|
-CAkey "$VALET_CA_DIR/LaravelValetCASelfSigned.key" \
|
|
-CAcreateserial \
|
|
-out "$VALET_CERT_DIR/$DOMAIN.crt" \
|
|
-days 1 \
|
|
-sha256 \
|
|
-extfile "/tmp/$DOMAIN.ext"
|
|
|
|
# Cleanup
|
|
rm "/tmp/$DOMAIN.csr" "/tmp/$DOMAIN.ext"
|
|
|
|
echo "✓ Expired certificate generated:"
|
|
echo " Certificate: $VALET_CERT_DIR/$DOMAIN.crt"
|
|
echo " Key: $VALET_CERT_DIR/$DOMAIN.key"
|
|
echo ""
|
|
echo "Certificate details:"
|
|
openssl x509 -in "$VALET_CERT_DIR/$DOMAIN.crt" -noout -dates
|
|
|
|
echo ""
|
|
echo "Reloading the domains list should now indicate $DOMAIN is expired."
|