SSL certifikát zadarmo, napríklad pre váš Node.js web

Publikoval Michal Kočí dňa 17.5.2015 o 21:27 v kategórii Node.js

Rozhodnutie je na vás, ale bežať dnes akýkoľvek web na obyčajnom, nezabezpečenom protokole HTTP zrejme už dnes nie je najšťastnejší nápad. Oveľa lepšie je použiť HTTPS, teda zabezpečený protokol, ktorý chráni dáta, ktoré sa odosieľajú zo zariadení vašich užívateľov ako aj dát, ktoré prúdia k nim. Dnes sa pozrieme, ako jednoducho získať SSL certifikát zadarmo pre vašu doménu. Ten môžete použiť kdekoľvek, napríklad na IIS či pre váš web bežiaci na Node.js.

Potrebujem SSL?

Teoreticky nie, samozrejme. Ale, ak použijete len HTTP protokol, všetka komunikácia medzi vašimi užívateľmi a vašim serverom bude nezašifrovaná a tak nezabezpečená.

Prihlasuje sa u vás váš užívateľ? Predpokladám, že jeho heslo máte bezpečne uložené v databáze a že ho máte buď zašifrované, alebo inak zabezpečené. Čiže ste si dali tú námahu zabezpečiť ho na strane servera a potom chcete, aby cez internet bolo odosielané len tak, v čistej textovej forme? Asi nie, že?

To isté platí aj pre ďalšie informácie, ktoré sa posielajú jedným alebo druhým smerom. Pokiaľ vám aspoň trochu záleží na súkromí vašich užívateľov, potom je pre vás HTTPS nutnosť.

No a v neposlednom rade, ak aktívne riešite pre váš web SEO, potom ste isto postrehli, že Google chce zvýhodňovať / zvýhodňuje weby bežiace na HTTPS. A robí dobre, samozrejme.

Registrácia a klientský certifikát

Prvým krokom je vaša bezplatná registrácia na webe StartSSL.com, kedy si vygenerujete klientský certifikát, ktorým sa budete následne na web prihlasovať. Tento si určite poriadne odzálohujte a dávajte si na neho pozor.

Certifikát pre váš web

Keď máte váš certifikát a ste na webe StartSSL prihlásený, nastal čas vygenerovať si SSL pre vašu doménu. Vygenerovaný certifikát viete použiť pre jednu doménu druhej úrovne (napríklad domain.com) a jednu tretej úrovne (napríklad www.domain.com).

Čiže musíte logicky začať tým, že si zaobstaráte doménu, ale tú už pravdepodobne máte, inak by vás SSL certifikát zrejme nezaujímal, pravda?

Následný postup sa skladá z dvoch krokov. Prvý je overenie e-mailu prináležiacemu k doméne. Akonáhle budete mať overený e-mail, tak druhým krokom je vygenerovanie samotného SSL certifikátu. Ak nemáte CSR (Certificate request), ten si viete tiež vygenerovať počas samotného procesu.

Overenie e-mailu

Ako som spomínal vyššie, celé overovanie prebieha elektronicky a v zásade sa jedná o overenie cez e-mail. StartSSL vám pošle overovací kód na jeden z ponúkaných e-mailov a kód vám pošle práve tam.

Nejde však o ľubovoľný email ale o jeden z: postmaster@, hostmaster@ či webmaster@. Za zavináčom bude samozrejme vaša doména. Plus si StartSSL zistí, aké e-maily sú evidované v registračných záznamoch k doméne a ponúkne vám zaslanie kódu aj na tieto.

Začnite teda tým, že sa prihlásite, čo vás vezme na úvodnú stránku:

SSL certifikát zadarmo - Uvítacia obrazovka

Následne pôjdete na záložku Validations Wizard ako typ validácie si vyberiete Domain Name Validation:

SSL certifikát zadarmo - Výber typu overenia

V ďalšom kroku musíte zadať názov vašej domény:

SSL certifikát zadarmo - Zadanie názvu domény

Následne vám web ponúkne na výber jednu zo spoemnutých e-mailových adries. Tu vidíte, že pre moju doménu mi ponúkol nie len tie tri základné, ale aj adresy registrátorov a moju adresu, ktorá je evidovaná u domény:

SSL certifikát zadarmo - Výber e-mailovej adresy pre overenie

Následne si počkáte na overovací e-mail. V ňom je to dôležité, overovací kód, ktorý musíte zadať v ďalšom kroku:

SSL certifikát zadarmo - Zadanie overovacieho kódu

Pokiaľ vám e-mail prišiel a kód ste opísali správne, tak sa vám práve podarilo overiť vlastníctvo domény a polovicu procesu máte úspešne za sebou!

SSL certifikát zadarmo - Overenie domény bolo úspešné

Vygenerovanie certifikátu

Úspešne ste si overili doménu, takže je najvyšší čas si vygenerovať samotný certifikát. Na ten buď budete potrebovať žiadosť o certifikát, alebo si ju v rámci procesu necháte vygenerovať.

Tentokrát začneme na záložke Certificates Wizard. Ako Certificate Target si vyberte možnosť Web Server SSL/TSL Certificate:

SSL certifikát zadarmo - Výber certifikátu

Nasleduje vygenerovanie privátneho kľúča a žiadosti o certifikát. Predpokladám v tomto kroku, že ani jedno nemáte, ak máte, váš postup bude mierne iný.

Zadajte si heslo pre váš privátny kľúč, veľkosť kľúča (vyberte si 2048), a hashovací algoritmus (vyberte si SHA2). A kliknite na pokračovať (Continue). Za predpokladu, že kľúč máte, tento krok preskočte kliknutím na Skip, čo však teraz nie je náš prípad.

SSL certifikát zadarmo - Generovanie privátneho kľúča

Služba vám vygeneruje súkromný kľúč a zobrazí vám ho. Skopírujte si ho, uložte si ho do čistého textového súboru a pomenujte si ho napríklad ssl.key a klinite na Continue:

SSL certifikát zadarmo - Privátny kľúč

Následne si musíte vybrať, pre ktorú doménu idete SSL generovať. V zozname uvidíte domény, ktoré ste úspešne overili, teda tú z minulého kroku, kde sme doménu overovali cez e-mail. Vyberte si tú správnu a kliknite na Continue:

SSL certifikát zadarmo - Výber domény

Ako som už spomínal, certifikát bude platný pre doménu druhého rádu a jednu doménu tretieho rádu - túto pravdepodobne budete chcieť mať www, ale rozhodnutie je samozrejme na vás. Zadajte jej názov a kliknutím na Continue pokračujte v procese.

SSL certifikát zadarmo - Výber subdomény

Zobrazia sa vám informácie o vašej žiadosti, ktoré si skontrolujte a ak všetko sedí, tak žiadosť potvrďte stlačením tlačidla Continue:

SSL certifikát zadarmo - Súhrnné informácie

Ak nenastane žiaden problém, StartSSL vám hneď vygeneruje certifikát. Ak nejaký problém nastane, môže sa vám stať, že certifikát nebudete mať ihneď, ale až keď vašu žiadosť manuálne skontroluje niekto zo StartSSL. To sa mi stalo raz, ale iný dopad, než že sa vygenerovanie certifikátu o pár hodín oddialilo to nemá.

Ak je teda certifikát vygenerovaný okamžite, zobrazí sa vám. Rovnako ako kľúč si ho skopírujte do nového čistého textového dokumentu a uložte, napríklad pod názvom ssl.crt. Keď ho máte bezpečne uložený, kliknite na tlačítko Finish.

SSL certifikát zadarmo - Vygenerovaný certifikát

Hotovo.

Použitie certifikátu v nginx pre Node.js web

Ako naložiť s certifikátom a ako ho úspešne nainštalovať na váš webový server sa líši podľa typu servera a nie je v mojich silách tu popisovať postup pre všemožné servery a ich rôzne verzie.

Ale, ak ho chcete použiť na nxing pre vašu Node.js aplikáciu, tak máte šťastie, lebo to je práve kombinácia, pre ktorú tu pre vás postup mám.

Chceli by ste sa rýchlo a ľahko naučiť programovať webové aplikácie v Javascripte a bežať ich na Node.js? Jednoduché. Rád vás to naučím na mojom školení Node.js - serverových aplikácií v Javascripte.

Celú prácu samozrejme vykonáme z okna terminálu. Začnite tým, že si vyexportujete privátny kľúč priamo do nginx konfiguračného adresára:

openssl rsa -in ssl.key -out /etc/nginx/conf.d/ssl.key

Následne si stiahnete intermediate certifikát priamo z webu:

wget http://www.startssl.com/certs/sub.class1.server.ca.pem

Spojíte ho s vašim certifikátom:

cat ssl.crt sub.class1.server.ca.pem > /etc/nginx/conf.d/ssl-unified.crt

Pozor! Je dosť pravdepodobné, že koniec jedného a začiatok druhého certifikátu budú na jednom riadku, čo nie je povolené. Preto sa presvedčte, že tomu tak nie je a ak je, tak tam v textovom editore vložte ručne zalomenie riadku. Textový editor si spustíte takto:

nano /etc/nginx/conf.d/ssl-unified.crt

Ak nano bežne nepoužívate, po zmene dokumentu stlačte ctrl + x a potvrďte, že chcete zmeny uložiť.

No a na záver už len rozšírite konfiguráciu nxing o nastavenia súvisiace s SSL. Do konfigurácie vášho webu pre HTTPS musíte vložiť nasledovné:

ssl on;
ssl_certificate /etc/nginx/conf.d/ssl-unified.crt;
ssl_certificate_key /etc/nginx/conf.d/ssl.key;

Dobrý postup potom môže byť taký, že HTTP počúvajúce na porte 80 presmerujete na HTTPS počúvajúce na porte 443. Celá konfigurácia pre HTTP by vyzerala napríklad nasledovne:

server {
listen 80;
server_name domain.com www.domain.com;
return 301 https://www.domain.com$request_uri;
}

A pre HTTPS by konfigurácia vyzerala napríklad takto. Nezabudnite v oboch zmeniť domain.com za vašu doménu a port 8090 za port, na ktorom vám lokálne beží váš web.

server {
  listen 443;
  server_name www.domain.com;
  access_log /var/log/nginx/domain.com.log;

  ssl on;
  ssl_certificate /etc/nginx/conf.d/ssl-unified.crt;
  ssl_certificate_key /etc/nginx/conf.d/ssl.key;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarder-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://localhost:8090;
    proxy_redirect off;
  }
}

Tým pádom máte nakonfigurovaný web, ktorý vám beží na HTTPS a certifikát máte zadarmo. A web máte oveľa bezpečnejší, než keby ste ho nechali bežať na HTTP.

Mohlo by ťa tiež zaujímať

Páčil sa ti príspevok?

Zdieľaj príspevok alebo si ho odlož na neskôr

Sleduj ma

Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.