Sergej Jakovljev explains how to setup different levels of security over SSL. What's the difference between different SSL certificates and how to set them up on NGINX, Heroku and Node.js.
7. Postupak izdavanja
1. Generiranje CSR (Certificate Signing Request)
2. Kupnja certifikata i slanje CA
3. Validacija i preuzimanje
4. Konfiguracija servera
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
• koji tip kupiti?
• gdje ga kupiti?
• validacije ovise o tipu certifikata
• uz certifikat je potrebno preuzeti i intemediate i root certifikat od CA
8. Tipovi certifikata
• potvrda organizacije
• sadrži papirologiju
• podaci o organizaciji u certifikatu
• plavo ime u nekim preglednicima
• izdaje se kroz 1-2 dana
Organization Validation (OV) Extended Validation (EV)Domain Validation (DV)
http://www.dailyhostnews.com/wp-content/uploads/2013/04/ssl-types.jpg
• enkripcija
• potvrda domene
• zeleni lokot
• dovoljno za Google
• izdaje se odmah
• striktna, standardizirana
provjera organizacije
• green bar
• izdaje se kroz 7-10 dana
Pokrivenost
Multiple domain WildcardSingle domain
9.
10. • Besplatno
• Domain Validation (DV)
• Nema garancije
• Nema podrške
• Expiration 90 dana
• certbot
15. Izvori za većinu konfiguracije koja slijedi:
https://sanderknape.com/2016/06/getting-ssl-labs-rating-nginx/
https://juliansimioni.com/blog/https-on-nginx-from-zero-to-a-plus-part-2-configuration-ciphersuites-and-performance/
21. # put do certifikata i privatnog ključa
# obicno leaf + intermediate certifikati
ssl_certificate /etc/ssl/certs/stranica.com.cetrchain.crt;
ssl_certificate_key /etc/ssl/private/stranica.com.key;
# onemogućimo SSL
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# postavimo veličinu cachea i vrijeme trajanja sessiona
# kako bi izbjegli ponavljanje dugotrajnog TLS handshakea
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 60m;
cat stranica_com.crt stranica_com.ca-bundle > stranica.com.certchain.crt
CERTIFIKAT + INTERMEDIATE + ROOT
22. # server bira cyphere umjesto klijenta
ssl_prefer_server_ciphers on;
# omogući samo određene cyphere
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
# za Diffie-Hellman Exchange koristi 2048 bit RSA ključ
ssl_dhparam /etc/nginx/cert/dhparam.pem;
openssl dhparam 2048 -out /etc/nginx/cert/dhparam.pem
27. # instancirajjos jedan server koji redirecta sve HTTP na HTTPS
# paziti za API-je
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name stranica.com;
return 301 https://www.stranica.com$request_uri;
}
server {
listen 443 ssl http2; # za najbolje rezultateomogućiti HTTP2
listen [::]:443 ssl http2;
...
}