Certyfikaty SSL są obecnie standardem w zabezpieczaniu stron internetowych. Jeśli korzystasz z hostingu z dostępem tylko do FTP i cPanel, możesz wykorzystać poniższą instrukcję, aby zautomatyzować proces generowania certyfikatów SSL Let's Encrypt. W tym artykule krok po kroku pokażemy, jak skonfigurować środowisko na komputerze z systemem Windows oraz jak użyć skryptu Python do automatyzacji.
1. Instalacja WSL (Windows Subsystem for Linux)
Windows Subsystem for Linux (WSL) umożliwia uruchamianie Linuksa bez potrzeby instalowania maszyny wirtualnej. W tym przypadku będzie to Ubuntu.
- Otwórz PowerShell jako administrator.
- Wykonaj polecenie, aby zainstalować WSL:
wsl --install
- Jeśli system wymaga restartu, uruchom ponownie komputer.
- Po restarcie, jeśli Ubuntu nie zostanie automatycznie zainstalowane, wykonaj:
wsl --install -d Ubuntu
- Po zakończeniu instalacji otwórz WSL i skonfiguruj konto użytkownika (nazwę użytkownika i hasło).
2. Instalacja Certbota i Zależności w WSL
Certbot to narzędzie do generowania certyfikatów SSL z Let's Encrypt.
- Otwórz WSL (np. Ubuntu).
- Wykonaj następujące polecenia:
sudo apt update sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update sudo apt install certbot python3-certbot python3-certbot-dns-manual
3. Instalacja Pythona i Dodatkowych Bibliotek
Skrypt Python wymaga kilku podstawowych bibliotek.
- Zainstaluj Python i pip:
sudo apt install python3 python3-pip
- Zainstaluj wymagane biblioteki:
pip3 install ftplib argparse
4. Przygotowanie Skryptu Python
- Utwórz katalog na skrypt, np.
C:\SSL_Automation\
. - Skopiuj poniższy kod skryptu Python i zapisz go w pliku
domena.py
.
import os
from ftplib import FTP
import subprocess
DOMAIN = "naprawy.mikro-serwis.pl"
ADDITIONAL_DOMAINS = ["www.mikro-serwis.pl"]
FTP_HOST = "ftp.your-host.com"
FTP_USER = "your-ftp-user"
FTP_PASS = "your-ftp-password"
FTP_WEBROOT = "/"
EMAIL = "biuro@mikro-serwis.pl"
def upload_challenge_file(token, validation):
try:
ftp = FTP(FTP_HOST)
ftp.login(FTP_USER, FTP_PASS)
ftp.cwd(FTP_WEBROOT)
with open(token, "w") as file:
file.write(validation)
with open(token, "rb") as file:
ftp.storbinary(f"STOR {token}", file)
os.remove(token)
ftp.quit()
except Exception as e:
print(f"Błąd FTP: {e}")
def handle_certbot_hook():
token = os.environ.get("CERTBOT_TOKEN")
validation = os.environ.get("CERTBOT_VALIDATION")
if not token or not validation:
print("Brak danych od Certbota.")
return
upload_challenge_file(token, validation)
def main():
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--create-challenge", action="store_true")
args = parser.parse_args()
if args.create_challenge:
handle_certbot_hook()
else:
domains_args = [DOMAIN] + ADDITIONAL_DOMAINS
certbot_cmd = [
"certbot", "certonly", "--manual", "--preferred-challenges", "http",
"--manual-auth-hook", f"python3 {os.path.abspath(__file__)} --create-challenge",
"--non-interactive", "--agree-tos", "--email", EMAIL
]
for domain in domains_args:
certbot_cmd += ["-d", domain]
subprocess.run(certbot_cmd)
if __name__ == "__main__":
main()
Zmień wartości w konfiguracji:
- DOMAIN: Twoja domena (np.
mikro-serwis.pl
). - ADDITIONAL_DOMAINS: Lista dodatkowych domen, np.
["www.mikro-serwis.pl"]
. - FTP_HOST, FTP_USER, FTP_PASS: Dane do logowania na serwer FTP.
- EMAIL: Twój adres e-mail.
- FTP_WEBROOT: ścieżka do katalogu głównego z stroną www
- DOMAIN: Twoja domena (np.
Zapisz zmiany.
5. Uruchomienie Skryptu
Przejdź do katalogu z plikiem
domena.py
w WSL:cd /mnt/c/SSL_Automation/
Uruchom skrypt:
python3 domena.py
Skrypt automatycznie:
- Wygeneruje pliki weryfikacyjne i przesyła je na serwer FTP.
- Przeprowadzi weryfikację domeny z Let's Encrypt.
- Wygeneruje certyfikaty SSL w katalogu:
/etc/letsencrypt/live/<domena>/
6. Instalacja Certyfikatu w cPanel
- Zaloguj się do cPanel swojego hostingu.
- Przejdź do sekcji „SSL/TLS” → „Zainstaluj certyfikat SSL”.
- Wklej odpowiednie dane:
- Certyfikat (CRT): Zawartość pliku
cert.pem
. - Klucz prywatny (Private Key): Zawartość pliku
privkey.pem
. - Łańcuch certyfikatów (CABUNDLE): Zawartość pliku
chain.pem
.
- Certyfikat (CRT): Zawartość pliku
- Zatwierdź konfigurację.
7. Odnawianie Certyfikatów
Certyfikat Let's Encrypt jest ważny przez 90 dni. Aby go odnowić, uruchom ponownie skrypt:
python3 domena.py
Podsumowanie
Automatyzacja procesu generowania certyfikatów SSL z Let's Encrypt znacząco ułatwia życie. Skrypt opisany w tym artykule eliminuje konieczność ręcznego tworzenia i przesyłania plików weryfikacyjnych, pozostawiając tylko etap instalacji certyfikatu w cPanel. Dzięki temu Twoja strona zawsze będzie zabezpieczona aktualnym certyfikatem SSL