LetsEncrypt SSL

Instalacja certbota

sudo apt-get install certbot python3-certbot-nginx.

Skrypt instalacji certyfikatu

#!/bin/bash

# Sprawdzamy, czy skrypt jest uruchamiany z uprawnieniami administratora
if [[ $EUID -ne 0 ]]; then
   echo "Ten skrypt musi być uruchamiany z uprawnieniami administratora (root)."
   exit 1
fi

# Odczytujemy nazwę domeny z argumentu linii poleceń
if [ $# -ne 1 ]; then
    echo "Użycie: $0 <nazwa_domeny>"
    exit 1
fi

domain="$1"

# Instalujemy certyfikat Let's Encrypt za pomocą Certbota
certbot certonly --nginx -d $domain

# Aktualizujemy konfigurację Nginx, aby używać nowego certyfikatu
if [ $? -eq 0 ]; then
    nginx -t && systemctl reload nginx
    echo "Certyfikat SSL dla domeny $domain został pomyślnie zainstalowany i skonfigurowany w Nginx."
else
    echo "Błąd podczas instalowania certyfikatu SSL dla domeny $domain."
fi

Skrypt instalacji certyfikatu wildcard

#!/bin/bash

# Sprawdzamy, czy skrypt jest uruchamiany z uprawnieniami administratora
if [[ $EUID -ne 0 ]]; then
   echo "Ten skrypt musi być uruchamiany z uprawnieniami administratora (root)."
   exit 1
fi

# Odczytujemy nazwę domeny z argumentu linii poleceń
if [ $# -ne 1 ]; then
    echo "Użycie: $0 <nazwa_domeny>"
    exit 1
fi

domain="$1"

# Instalujemy certyfikat Let's Encrypt jako wildcard
certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns -d "*.$domain"

# Aktualizujemy konfigurację Nginx, aby używać nowego certyfikatu
if [ $? -eq 0 ]; then
    nginx -t && systemctl reload nginx
    echo "Certyfikat SSL jako wildcard (*.${domain}) został pomyślnie zainstalowany i skonfigurowany w Nginx."
else
    echo "Błąd podczas instalowania certyfikatu SSL jako wildcard (*.${domain})."
fi

Użycie: ./installwildcardssl.sh twojadomena.com.

Automatyczne odnowienie

sudo crontab -e.

0 0 1 /usr/bin/certbot renew --quiet.

Test automatycznego odnowienia certyfikatu

sudo certbot renew --dry-run.

Przekierowanie http>https w nginx

Zmiana w pliku konfiguracyjnym host-a domeny:

server {
   listen 80;
   listen[::]:80;
   server_name example.com www.example.com;

   return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl http2;
   listen [::]:443;
   server_name example.com www.exmaple.com;

   ssl_certificate /etc/cert/fullchain.pem;
   ssl_certificate_key /etc/cert/private.pem;

   ...
}