...
This commit is contained in:
71
scripts/generate_cert.sh
Executable file
71
scripts/generate_cert.sh
Executable file
@@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to generate a self-signed certificate for WebDAV HTTPS testing
|
||||
|
||||
# Default values
|
||||
CERT_DIR="./certs"
|
||||
CERT_FILE="$CERT_DIR/webdav.crt"
|
||||
KEY_FILE="$CERT_DIR/webdav.key"
|
||||
DAYS=365
|
||||
COMMON_NAME="localhost"
|
||||
|
||||
# Parse command line arguments
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-d|--dir)
|
||||
CERT_DIR="$2"
|
||||
CERT_FILE="$CERT_DIR/webdav.crt"
|
||||
KEY_FILE="$CERT_DIR/webdav.key"
|
||||
shift 2
|
||||
;;
|
||||
-cn|--common-name)
|
||||
COMMON_NAME="$2"
|
||||
shift 2
|
||||
;;
|
||||
-days)
|
||||
DAYS="$2"
|
||||
shift 2
|
||||
;;
|
||||
-h|--help)
|
||||
echo "Usage: $0 [options]"
|
||||
echo "Options:"
|
||||
echo " -d, --dir DIR Directory to store certificates (default: ./certs)"
|
||||
echo " -cn, --common-name CN Common name for certificate (default: localhost)"
|
||||
echo " -days DAYS Validity period in days (default: 365)"
|
||||
echo " -h, --help Show this help message"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
echo "Use --help for usage information"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Create certificate directory if it doesn't exist
|
||||
mkdir -p "$CERT_DIR"
|
||||
|
||||
echo "Generating self-signed certificate for $COMMON_NAME"
|
||||
echo "Certificate will be valid for $DAYS days"
|
||||
echo "Files will be stored in $CERT_DIR"
|
||||
|
||||
# Generate private key and certificate
|
||||
openssl req -x509 -newkey rsa:4096 -keyout "$KEY_FILE" -out "$CERT_FILE" -days "$DAYS" -nodes -subj "/CN=$COMMON_NAME"
|
||||
|
||||
# Check if generation was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Certificate generation successful!"
|
||||
echo "Certificate: $CERT_FILE"
|
||||
echo "Private key: $KEY_FILE"
|
||||
|
||||
# Make the files readable
|
||||
chmod 644 "$CERT_FILE"
|
||||
chmod 600 "$KEY_FILE"
|
||||
|
||||
echo ""
|
||||
echo "To use these certificates with the WebDAV server, run:"
|
||||
echo "go run cmd/webdavserver/main.go -https -cert $CERT_FILE -key $KEY_FILE [other options]"
|
||||
else
|
||||
echo "Certificate generation failed!"
|
||||
fi
|
||||
Reference in New Issue
Block a user