Jak uruchomić i skonfigurować serwer WWW na Raspberry Pi  (Linux/Raspbian (Debian) + Apache + PHP + MySQL) pisałem już jakiś czas temu… Przy okazji wspomniałem jak „na swoje potrzeby” uruchomić połączenie szyfrowane z serwerem (https/SSL) korzystając z „prywatnego” certyfikatu.

Pewnym minusem tego rozwiązania jest komunikat w przeglądarce informujący o tym, że certyfikat jest niezaufany – dlatego o ile „na nasze potrzeby” takie rozwiązanie jest wystarczające (a do tego darmowe i proste do wdrożenia), to w przypadku gdy z połączenia szyfrowanego z naszą stroną WWW mają korzystać „inni” warto pomyśleć nad instalacją certyfikatu który będzie zaufany w większości przeglądarek…

Bezpłatny certyfikat StartSSL

Zaczynamy od założenia konta na StartSSL.com – najszybciej jest chyba skorzystać z opcji „Express Lane”:

startssl-com_express-lane01

Pamiętajcie by podczas rejestracji podać prawdziwe dane.

Jak wszystko pójdzie dobrze, do Waszej przeglądarki (systemu) zostanie dodany klucz – i to właśnie za jego pomocą logujecie się do swojego konta.

StartSSL Free (Class 1)

By wygenerować certyfikat będzie potrzebna weryfikacja domeny. Wygląda to tak, że możecie wybrać jeden z kilku „systemowych” adresów e-mail by potwierdzić, że jesteście właścicielami domeny.

Do wyboru m.in.:

  • webmster@domena
  • postmaster@domena

Certyfikat wygenerujcie wybierając zakładkę „Certificates Wizard” a następnie:

startssl-com_new-crt01

Web Serwer SSL/TLS Certificate

W następnym kroku trzeba ustawić hasło dla „klucza prywatnego” (od 10 do 32 znaków, tylko litery i cyfry).

Możecie też zmienić m.in. rozmiar klucza (Keysize) z 2048 bitów na 4096.

W dalszej kolejności należy zapisać plik ssl.key, wybrać domenę i jedną(!) subdomenę (np. www, ale może być dowolna), i na koniec zapisać jeszcze plik ssl.crt.

Oprócz plików ssl.key i ssl.crt będą potrzebne jeszcze dwa, które należy pobrać ze strony StartSSL:

W przypadku gdy chcecie zabezpieczyć więcej domen (lub subdomen) wystarczy powtórzyć powyższe kroki, lub skorzystać z certyfikatu płatnego.

Apache2: instalacja certyfikatu SSL

Procedura jest opisana na przykładzie Raspberry Pi z systemem Raspbian (Linux/Debian) i od tego momentu może się różnić w zależności od typu/rodzaju systemu operacyjnego i/lub serwera WWW jaki macie zainstalowany na swoim urządzeniu.

Informacje jak zainstalować certyfikat m.in. na Apache, cPanel (WHM), ISS, nginx, Lightttpd znajdziecie też na stronie StartSSL.com.

Zakładam też, że macie już skonfigurowany serwer WWW (Apache) i dodaną domenę/subdomenę.

Zaczynamy od skopiowania potrzebnych plików do Raspberry Pi, np. do katalogu:

/usr/local/etc/apache/conf/ssl.crt/

Wy możecie wybrać inny – pamiętajcie tylko by odpowiednio zmodyfikować ścieżki w następnych krokach.

Edytujemy plik konfiguracyjny serwera

sudo nano /etc/apache2/sites-enabled/default-ssl

I zaraz za:

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
	ServerAdmin webmaster@localhost

	DocumentRoot /var/www
	ServerName NASZA_DOMENA - pamiętaj by uzupełnić!
	ServerName RPi01

dodajemy:


SSLEngine on
SSLProtocol +TLSv1.1 +TLSv1.2
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
SSLHonorCipherOrder on
SSLCertificateFile /usr/local/etc/apache/conf/ssl.crt/ssl.crt
SSLCertificateKeyFile /usr/local/etc/apache/conf/ssl.crt/ssl.key
SSLCertificateChainFile /usr/local/etc/apache/conf/ssl.crt/sub.class1.server.ca.pem
SSLCACertificateFile /usr/local/etc/apache/conf/ssl.crt/ca.pem

Jeśli wcześniej korzystaliście z szyfrowania z własnym/prywatnym/niezaufanym certyfikatem, tak jak to opisywałem to dodatkowo musicie skasować lub „zakomentować” (przez dodanie # na początku linii) następujące 2 linijki:

SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Teraz wystarczy zrestartować serwer (usługę):

sudo /etc/init.d/apache2 restart

raspberry-pi_apache_ssl01

Po wejściu na stronę powinniście zobaczyć Wasz nowy (i zaufany) certyfikat:

raspberry-pi_apache_ssl_www-cert

Wyłączamy hasło dla ssl.key

Jak zapewne zauważyliście przy okazji restartu serwera – za każdym razem trzeba podać hasło do klucza prywatnego (ssl.key), co może być niewygodne – zwłaszcza przy zdalnej pracy z serwerem.

By usunąć hasło z pliku (odszyfrować certyfikat) można skorzystać z formatki dostępnej na Waszym koncie w StartSSL:

  • Tool Box: Decrypt Private Key

Albo bezpośrednio z poziomu systemu za pomocą prostej komendy, choć najpierw zrobimy kopie pliku – na wszelki wypadek:

sudo mv /usr/local/etc/apache/conf/ssl.crt/ssl.key /usr/local/etc/apache/conf/ssl.crt/ssl.key.bak

I usuwamy żądanie hasła:

sudo openssl rsa -in /usr/local/etc/apache/conf/ssl.crt/ssl.key.bak -out /usr/local/etc/apache/conf/ssl.crt/ssl.key

raspberry-pi_apache_ssl02

Wygasa Twój certyfikat logowania do StartSSL? Zobacz jak wygenerować nowy certyfikat logowania…

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk