Môj boj s HTTPS alebo SSL certifikáty zdarma

A je tu ďalší zo série - something ZDARMA!!.. ale nie..
Môj boj s HTTPS začal dávnejšie, keď som zbadal tú hrozivú hlášku v konzoli, že Google prestane podporovať možnosť využívať Geolocation API s tým, že stránka poteče cez HTTP.
Ou shit! Ale veď SSL certifikáty sú drahé..
Ale ide to aj zdarma!

Tento boj vediem skutočne dosť dlho od 28.8.2015, keďže skúšanie a optimalizácia celého webu pre SSL boli pre mňa neprebádané vody, bola to sranda, každopádne dnes SSL nasadzujem aj na záchod.
S certifikátmi to bol podobný boj, najskôr som niekde splašil 3 mesačný free certifikát ktorý mi ukázal, že SSL chcem!

Čo to je HTTPS?

HTTPS (Hypertext Transfer Protocol Secure) je v informatike nadstavba sieťového protokolu HTTP , ktorá umožňuje zabezpečiť spojenie medzi klientom (napr. Webovým prehliadačom) a serverom pred odpočúvaním, podvržením dát a umožňuje tiež overiť identitu protistrany. HTTPS používa protokol HTTP, pričom prenášané dáta sú šifrované pomocou SSL alebo TLS a štandardný port na strane servera je 443.
stop..stop.. to snáď nemusím vysvetlovať.

Čínske free SSL?

Sprevádzkovanie HTTPS dosiahneme jednoducho vytvorením vlastného certifikátu ktorý si aj sami podpíšeme.
.. aké dôveryhodné čo?
a stačí nám na to iba tento kúsok kódu:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days XXX

.. ale ten nám samozrejme stačiť nebude pokiaľ chceme aby aj niekto na našu stránku prišiel.

 

WoSign

Ale ako v nadpise spomínam číňanov - ide u nich na tomto linku získať Free SSL certifikát na rok až myslím dva úplne zdarma!
Má to nejaký háčik? ani nie.. Môžete si dokonca do certifikátu po novom pridať aj pár alternatívnych doménových mien.
Zadáte doménové mená a preklikáte sa až k prevzatiu samotného certifikátu.
Odporúčam si prevziať aj root certifikáty WoSignu pretože so samotným certifikátom sa bude kamarátiť iba Chrome na Windowse.
A tu nastáva problém, že aj keďže sú tieto certifikáty zdarma sa stretnete s problémom a to tým, že na Macu(možno aj iných OS a záležitostiach) vám stránky zabezpečené týmto certifikátom vyhodí ako neplatné
Každopádne stále je to dobrá možnosť ako získať free certifikát.

EDIT 4.12.2016 - Na stránke WoSign sa píše "Sorry, due to some security consideration, WoSign decide to close the free SSL certificate application temporarily. Sept. 29th 2016." To znamená že nie je momentálne možné tvoriť tieto free SSL certifikáty avšak je tu alternatíva - StartSSL ktorá je síce zložitejšia na sprevádzkovanie ale je free a funguje takisto ako WoSign a dokonca na dlhšie - 4 roky.

Let's Encrypt

Let's Encrypt je nová certifikačná autorita, ktorá začala 12. apríla 2016(v bete už skoršie), poskytovať bezplatné X.509 certifikáty Transport Layer Security (TLS) šifrované pomocou automatizovaného procesu ktorý bol navrhnutý tak, aby eliminoval súčasne zložitý proces - ručnú tvorbu certifikátov, validáciu, podpisovanie, inštaláciu a predĺženie platnosti.
Alias - jedného dňa sa parta dobrých ľudí rozhodla, že vyrobia free autoritu ktorá bude rozdávať certifikáty ako na bežiacom páse. Ako to funguje si môžete prečítať tu.

Celá záležitosť spočíva v nainštalovaní programu ktorý bude generovať certifikáty každé tri mesiace úplne sám.
Samozrejme má to ešte svoje muchy a to hlavne v tom, že je hlavne pre Linux based webservery.
A keďže ja doma ako som spomínal mám Windows Server, dlho dlho som nemohol túto krásnu záležitosť využívať.
Až som jedného krásneho dňa zistil, že to ide!. Ako, to si vysvetlíme.

Let's Encrypt pre Windows Apache

Postupujte takto

Získajte letsencrypt-win-simple

Kecy o tom, že podporuje iba IIS ignorujte.
Tento nástroj si niekde rozbaľte. Napríklad do zložky C:\diskC\letsencrypt. Nie je to dočasná zložka, keďže táto aplikácia bude obnovovať certifikáty.

Vytvorte si /.well-known alias v Apache

Ak používate vhosts - to znamená, že jeden server hostuje viacero domén odporúčam si nastaviť tento alias pretože vďaka nemu potom získate univerzálne prístupný adresár a takzvaný acme-challenge prebehne bez problémov.

Alias /.well-known "C:/htdocs/.well-known"

.. napríklad.

 

Ide sa na to

Spustíme si Windows CMD, navigujeme sa do našej zložky kde smeruje Apache alias (C:\htdocs\) - to preto, že v adresári, kde spustíme tento program sa vytvorí zložka .well-known ktorá slúži na overenie - a napíšeme

C:\diskC\letsencrypt\letsencrypt.exe --san --accepttos

Čo sa začne diať? Spustí sa letsencrypt-win-simple s parametrom pre multidoménový názov(SAN) čo sa nám hodí, pretože jedna z múch je, že Let's Encrypt nepodporuje wildcard domény(napr. *.kubovblog.eu). Druhý parameter slúži na to, aby sa odsúhlasila licenčná zmluva.


V tomto dialógu zvolíme možnosť s písmenom M Generate a certificate manually.
Aplikácia sa nás spýta na host name. Toto bude hlavný názov domény pre ktorý bude certifikát pridaný, avšak toto slúži fakt iba ako názov, musíme túto doménu uviesť aj do ďalšieho kroku aby sa pre ňu aplikoval certifikát.
Enter all Alternative Names seperated by a comma je vec ktorá nás najviac zaujíma.
Tu môžete pridať až 100(maximálny počet povolený Let's Encryptom) doménových názvov. Takisto nezabudnime na alternatívu s www.
Pre príklad, že vlastním doménu test.com by som uviedol - test.com,www.test.com,mail.test.com,www.mail.test.com,img.test.com,www.img.test.com .. prosto všetky doménové názvy, ktoré potrebujeme. Nemôžeme sem však písať blbosti, ktoré neexistujú keďže v overovaciom kroku si aplikácia overí každé doménové meno čiže napr. http://test.com/.well-known/acme-challenge/blablabla.

Ďalší krok iba stlačte ENTER, pretože my už v potrebnom folderi sme.
A začne sranda v podobe overovania. Pokiaľ sa dokončí, aplikácia nastaví autoobnovu certifikátu po defaultne 60 dňoch a v adresári %APPDATA\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\ si nájdete svoje SSL certifikáty, ktoré potom jednoducho pridáme do webserveru. Doporučujem si v letsencrypt.exe.config súbore túto cestu prehodiť niekde do centrálneho úložiska vašich SSL napríklad.


SSLEngine on
 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK 
 SSLProtocol All -SSLv2 -SSLv3 
    SSLCertificateFile "C:/LetsEncrypt-Certifikaty/test.com-crt.pem"
    SSLCertificateKeyFile "C:/LetsEncrypt-Certifikaty/test.com-key.pem"
    SSLCertificateChainFile "C:/LetsEncrypt-Certifikaty/ca-00000000000000000-crt.pem"

Tento kód si prispôsobíme a vložíme si do do nášho Apache súboru do vhost zápisu... reštartujeme si Apache a otestujeme.

 

Je to tam!

Ak ste všetko urobili správne tak by ste po vstupe na HTTPS alternatívu vášho webu mali by ste vidieť toto:


A odteraz váš web fičí na HTTPS a vy už program letsencrypt-win-simple nemusíte ani nikdy otvoriť. Všetko sa totiž bude obnovovať samo .. nie, svet totiž taký krásny nie je a zatiaľ automatické obnovovanie pre manuálne generované certifikáty programom letsencrypt-win-simple nie je funkčné(skončí chybou). Preto bude potrebné aby ste v/pred dátumom exspirácie certifikátu vytvorili rovnakým postupom nový, reštartovali Apache a fungovali ďalej. Predvolená doba trvania certifikátu je 60 dní, dá sa však zmeniť na maximum 90 v konfiguračnom súbore letsencrypt-win-simple.

Takto po rozkliknutí certifikátu jednoducho overíte, či je všetko správne.
Snáď som vám pomohol v nasadení SSL(ak chcete aj free doménu klik sem), dúfam že nenastal žiaden problém a ak hej, napíšte ho dolu do komentárov a pokúsim sa pomôcť :).