Instalacja certyfikatu SSL w serwerze Apache
25.10.2025
Instalacja Apache'a i aktywacja modułu mod_ssl w systemach linuksowych:
dystrybucje Debian / Ubuntu i inne bazujące na Debianie (np. Mint ):
sudo apt-get install apache2
sudo a2enmod ssl
    dystrybucje Red Hat / Fedora / CentOS :
yum install httpd
yum install mod_ssl
    Instalacja certyfikatu SSL:
- 
            Skopiuj całą zawartość certyfikatu od linii
            
-----BEGIN CERTIFICATE-----do-----END CERTIFICATE-----i zapisz do pliku mojadomena.crt . - 
            Skopiuj plik z certyfikatem
            
mojadomena.crtdo katalogu w którym będzie przechowywany certyfikat, np.:
/etc/ssl/certs/ - Otwórz plik konfiguracyjny Apache'a apache2.conf w edytorze tekstowym.
 - 
            Zlokalizuj dyrektywę
            
VirtualHostdla twojego serwera wirtualnego. Do działania certyfikatu SSL niezbędne będą następujące dyrektywy:
- 
                    
SSLEngine on- włączenie SSL w Apache'u - 
                    
SSLCertificateFile- plik zawierający certyfikat serwera oraz certyfikat pośredni (intermediate) odpowiedni dla zamówionego certyfikatu SSL - 
                    
SSLCertificateKeyFile- plik zawierający klucz prywatny 
Uwaga! Instalacja certyfikatu pośredniego jest niezbędna do poprawnego funkcjonowania certyfikatu SSL.Konfiguracja minimalna:
<VirtualHost 1.2.3.4:443> DocumentRoot /var/www ServerName www.moja-domena.pl SSLEngine on SSLCertificateFile /etc/ssl/certs/mojadomena.crt SSLCertificateKeyFile /etc/ssl/private/mojadomena.key </VirtualHost>
Konfiguracja dodatkowa, zalecana:
<VirtualHost 1.2.3.4:443> # [...] SSLProtocol -all +TLSv1.2 +TLSv1.3 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 SSLHonorCipherOrder off SSLSessionTickets off Header always set Strict-Transport-Security "max-age=31536000" SSLUseStapling on SSLStaplingCache "shmcb:logs/ssl_stapling(32768)" Protocols h2 http/1.1 # [...] </VirtualHost>- 
                    
SSLProtocol -all +TLSv1.2 +TLSv1.3- wyłączenie przestarzałych protokołówSSLv2,SSLv3,TLSv1.0,TLSv1.1. Włączenie aktualnie bezpiecznych protokołówTLSv1.2iTLSv1.3. - 
                    
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384- ustawienie priorytetu dla silnych szyfrów, jednocześnie wyłączenie słabych i przestarzałych - 
                    
Protocols h2 http/1.1- Włączenie protokołu HTTP/2 - 
                    
Header add Strict-Transport-Security- Nagłówek Strict-Transport-Security (HSTS) powiadamia przeglądarkę aby za każdym razem łączyła się do serwera tylko poprzez protokół SSL (HTTPS). Czas ustalony w max-age podaje się w sekundach (31536000 sekund = 12 miesięcy) 
 - 
                    
 - Zapisz zmiany.
 - 
            Zrestartuj serwer Apache używając następujących poleceń:
            
sudo service apache2 restartdystrybucje Red Hat / Fedora / CentOS
apachectl restartsudo /usr/sbin/apachectl restart - 
            Przetestuj zdalnie konfigurację serwera za pomocą publicznego
            serwisu
            
                DigiCert Check website security
            
            lub
            
                Qualys SSL Server Test
            
            .
            
            
         
Częste problemy
- 
            Serwer Apache nie startuje. Komunikat o błędzie w
            
/var/log/apache2/error.log:
Możliwe przyczyny:Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
- 
                    Brakujący moduł
                    
sslw Apache'u. 
Rozwiązanie problemu:
- 
                    Zainstaluj moduł
                    
ssldo serwera Apachesudo a2enmod ssl - 
                    Zrestartuj Apache'a
                    
sudo service apache2 restart 
 - 
                    Brakujący moduł
                    
 - 
            Serwer Apache nie startuje. Komunikat o błędzie w
            
/var/log/apache2/error.log:
Możliwe przyczyny i sposoby rozwiązania:AH02238: Unable to configure RSA server private key SSL Library Error: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
- Klucz prywatny nie pasuje do certyfikatu serwera. Upewnij się, czy używasz odpowiedniego klucza prywatnego.
 
 - 
            Serwer Apache nie startuje. Komunikat o błędzie w
            
/var/log/apache2/error.log:
Możliwe przyczyny:Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration
- 
                    Brakujący moduł
                    
headersw Apache'u. 
Rozwiązanie problemu:
- 
                    Zainstaluj moduł
                    
headersdo serwera Apachesudo a2enmod headers - 
                    Zrestartuj Apache'a
                    
sudo service apache2 restart 
 - 
                    Brakujący moduł
                    
 - 
            Serwer Apache nie startuje. Na stronie z zainstalowanym certyfikatem
            SSL pojawia się kod błędu:
            
Przyczyna:ssl_error_weak_server_ephemeral_dh_key
- Serwer ma zainstalowany słaby publiczny klucz efemeryczny Diffiego-Hellmana
 
Rozwiązanie problemu:
- 
                    Zaktualizuj (lub dodaj) klucz efemeryczny Diffiego-Hellmana
                    (dyrektywa
                    
ssl_dhparam). - 
                    Zrestartuj Apache'a
                    
sudo service apache2 restart 
 
Pokrewne linki
Przydatne linki
- Strona domowa serwera Apache: httpd.apache.org
 - Apache SSL/TLS Encryption: httpd.apache.org/docs/2.4/ssl/