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.
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.
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.
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.
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:
Následne pôjdete na záložku Validations Wizard ako typ validácie si vyberiete Domain Name Validation:
V ďalšom kroku musíte zadať názov vašej 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:
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:
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!
Ú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:
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.
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:
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:
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.
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:
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.
Hotovo.
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.
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.