W poprzednim artykule: Darmowe certyfikaty SSL opisałem gdzie można zdobyć darmowy a zarazem zaufany przez przeglądarki certyfikat SSL. Tym razem zajmiemy się częścią pratyczną czyli generowaniem i instalacją certyfikatu SSL dla naszej strony. Jako, że jestem fanem serwera nginx, opis konfiguracji będzie dotyczył właśnie tego serwera www.
Tworząc certyfikat będziemy korzystali z pakietu openssl, choć zawsze można posiłkować się generatorem online.
Drugim warunkiem jest nginx skompliowany z obsługą modułu ssl. W konsoli wywłujemy: nginx -V, jeśli dostaniemy: --with-http_ssl_module to "jesteśmy w domu", w innym przypadku musimy przekompliować nginx-a. Proces kompliacji można znaleźć w artykule o konfiguracji rtorrent + rutorrent = GUI/WebUI.
Tworzenie certyfiaktu:
openssl genrsa -out mojadomena.key 2048
openssl genrsa -des3 -out mojadomena.key 2048
- Country Name - podajemy dwuliterowy symbol kraju
- State or Province Name - pełna nazwa województwa, np. Małopolskie
- Locality Name - pełna nazwa miasta
- Organization Name - pełna nazwa naszej firmy / organizacji, np.Nazwa Firmy SA
- Organizational Unit Name - dział firmy / organizacji
- Common Name - pełna nazwa domenowa (FQDN) szyfrowanej strony, np. poczta.nasza_domena.pl
- Email - do kontaktu w sprawie certyfiaktu (pole nie wymagane)
- A challenge password []: - nie uzupełniamy
- An optional company name []: - nie wymagane
chmod 600 /etc/nginx/ssl/nazwa_naszej_domeny/mojadomena.key
chmod 600 /etc/nginx/ssl/nazwa_naszej_domeny/mojadomena.crt
Konfiguracja: nginx + SSL
W tym momencie pozostaje uruchomienie SSL na serwesze nginx. Jako, że wygenerowaliśmy certyfiakt SSL dla subdomeny, skonfigurujemy v-hosta. Dla urposzczenia przyjmuję, że naszą domeną jest: poczta.domena.pl . Sama konfiguracja jest identyczna dla wszystkich dystrybucji niemniej jednak może różnić się np. scieżkami. Poniższa konfiguracja została przeprowadzona na Debianie.
Konfiguracja będzie tak skonstuowana, żeby użytkownik nie musiał specjalnie wpisywać w przeglądarkę: https://poczta.domena.pl wystraczy: poczta.domena.pl .
server {
listen 80;
server_name poczta.domena.pl;
if ($host = 'poczta.domena.pl' ) {
rewrite ^/(.*)$ https://poczta.domena.pl/$1 permanent;
}
access_log /var/log/nginx/poczta.domena.pl.access.log;
error_log /var/log/nginx/poczta.domena.pl.error.log;
}
server {
listen 443;
ssl on;
server_name poczta.domena.pl;
ssl_certificate /etc/nginx/ssl/poczta.domena.pl/ssl.crt;
ssl_certificate_key /etc/nginx/ssl/poczta.domena.pl/ssl.key;
access_log /var/log/nginx/poczta.domena.pl.access_log;
error_log /var/log/nginx/poczta.domena.pl.error_log;
.
. # dalsza część pliku konfiguracyjnego
}