Below is a Bash script to download and set up Nginx server with SSL using a self-signed certificate and user-provided details:

#!/bin/bash

# Check if the script is running with root privileges
if [ "$EUID" -ne 0 ]; then
    echo "Please run this script as root or with sudo."
    exit 1
fi

# Check if a domain name is provided as an argument
if [ $# -ne 1 ]; then
    echo "Usage: $0 <domain_name>"
    exit 1
fi

# Assign the provided domain name to a variable
domain_name="$1"

# Prompt the user for SSL certificate details
read -p "Enter the Country Code (e.g., US): " country_code
read -p "Enter the State or Province (e.g., California): " state
read -p "Enter the Locality or City (e.g., San Francisco): " city
read -p "Enter the Organization Name (e.g., My Company): " organization

# Update package lists
apt-get update

# Install Nginx
apt-get install -y nginx

# Start Nginx service
systemctl start nginx

# Enable Nginx to start on boot
systemctl enable nginx

# Check if Nginx is running
if systemctl is-active --quiet nginx; then
    echo "Nginx has been installed and is running."
else
    echo "Failed to start Nginx. Check for any errors during installation."
    exit 1
fi

# Generate self-signed SSL certificate with user-provided details
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt -subj "/C=${country_code}/ST=${state}/L=${city}/O=${organization}/CN=${domain_name}"

# Configure Nginx to use SSL
cat > /etc/nginx/sites-available/default << EOF
server {
    listen 80;
    listen [::]:80;

    server_name ${domain_name};

    return 301 https://\$host\$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name ${domain_name};

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {
        root /var/www/html; # Change this to the root directory of your website
        index index.html index.htm;
    }
}
EOF

# Create a symbolic link to enable the configuration
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

# Test Nginx configuration for syntax errors
nginx -t

# Reload Nginx to apply the changes
systemctl reload nginx

# Display the server IP address and open the default Nginx page in the browser
server_ip=$(curl -s http://checkip.amazonaws.com)
echo "Nginx with SSL is serving at https://${domain_name}/"

# Optionally, you can open the default Nginx page in the default web browser
# Uncomment the following line if you want to open the page automatically
# xdg-open "https://${domain_name}/"

Save the script to a file, for example, nginx_ssl_setup.sh. Make sure to give it executable permissions using the following command:

chmod +x nginx_ssl_setup.sh

Then, run the script with root privileges and provide the domain name as an argument:

sudo ./nginx_ssl_setup.sh example.com

Replace example.com with your actual domain name. The script will prompt the user for SSL certificate details, update the package lists, install Nginx, start the Nginx service, generate a self-signed SSL certificate with the provided domain name and user-provided details, configure Nginx to use SSL for the specified domain, and display the server IP address along with the default Nginx page’s URL (with SSL). Optionally, you can uncomment the xdg-open line to automatically open the default Nginx page in the default web browser after installation. Remember that this self-signed certificate is not recommended for production use; use a valid SSL certificate from a trusted certificate authority for production deployments.

Below is a Bash script to download and set up Apache server with SSL using a self-signed certificate and user-provided details:

#!/bin/bash

# Check if the script is running with root privileges
if [ "$EUID" -ne 0 ]; then
    echo "Please run this script as root or with sudo."
    exit 1
fi

# Check if a domain name is provided as an argument
if [ $# -ne 1 ]; then
    echo "Usage: $0 <domain_name>"
    exit 1
fi

# Assign the provided domain name to a variable
domain_name="$1"

# Prompt the user for SSL certificate details
read -p "Enter the Country Code (e.g., US): " country_code
read -p "Enter the State or Province (e.g., California): " state
read -p "Enter the Locality or City (e.g., San Francisco): " city
read -p "Enter the Organization Name (e.g., My Company): " organization

# Update package lists
apt-get update

# Install Apache
apt-get install -y apache2

# Start Apache service
systemctl start apache2

# Enable Apache to start on boot
systemctl enable apache2

# Check if Apache is running
if systemctl is-active --quiet apache2; then
    echo "Apache has been installed and is running."
else
    echo "Failed to start Apache. Check for any errors during installation."
    exit 1
fi

# Generate self-signed SSL certificate with user-provided details
mkdir -p /etc/apache2/ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt -subj "/C=${country_code}/ST=${state}/L=${city}/O=${organization}/CN=${domain_name}"

# Enable Apache SSL module and default site
a2enmod ssl
a2ensite default-ssl

# Reload Apache to apply the changes
systemctl reload apache2

# Display the server IP address and open the default Apache page in the browser
server_ip=$(curl -s http://checkip.amazonaws.com)
echo "Apache with SSL is serving at https://${domain_name}/"

# Optionally, you can open the default Apache page in the default web browser
# Uncomment the following line if you want to open the page automatically
# xdg-open "https://${domain_name}/"

Save the script to a file, for example, apache_ssl_setup.sh. Make sure to give it executable permissions using the following command:

chmod +x apache_ssl_setup.sh

Then, run the script with root privileges and provide the domain name as an argument:

sudo ./apache_ssl_setup.sh example.com

Replace example.com with your actual domain name. The script will prompt the user for SSL certificate details, update the package lists, install Apache, start the Apache service, generate a self-signed SSL certificate with the provided domain name and user-provided details, enable SSL module and default site, reload Apache to apply the changes, and display the server IP address along with the default Apache page’s URL (with SSL). Optionally, you can uncomment the xdg-open line to automatically open the default Apache page in the default web browser after installation. Remember that this self-signed certificate is not recommended for production use; use a valid SSL certificate from a trusted certificate authority for production deployments.