Domeka
21.05.2012., 03:51:42 *
Welcome, Guest. Please login or register.

Login with username, password and session length
 
   Home   Help Search GoogleTagged Contact Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: Certifikati za servise  (Read 1108 times)
0 Members and 1 Guest are viewing this topic.
The MasteR
Administrator
Full Member
*****

Karma: +20/-0
Offline Offline

Gender: Male
Posts: 168



View Profile WWW
« on: 13.12.2008., 23:32:40 »

Kriptografski certifikati, kao što već znate, omogućuju sigurnu autentikaciju, a time i komunikaciju između dvije točke na Internetu, ali i sigurnu identifikaciju suprotne strane. Ovo omogućuje asimetrična kriptografija, no teorijom se u ovom članku nećemo baviti. Iak opostoje tvrtke koje prodaju certifikate i time nedvojbeno potvrđuje da je web site vaš, certifikati koje sami potpisujete (self-signed certificates) omogućuju isto šo i komercijalni. Jedina razlika su dosadni popup prozori u browseru koji će stalno pitati korisnika vjeruje li dobivenom certifikatu ili ne.

Već neko vrijeme, CARNet nudi "prave" certifikate, u vidu CT SureServer certifikata za akademsku zajednicu. Nažalost, sve institucije članice CARNeta nemaju pravo na ove certifikate, zato ćemo obraditi kreiranje i self-signed certifikata za one koji nemaju pravo na CyberTrust certifikate.

1. CyberTrust SureServer EDU certifikati

Na web stranicama http://www.carnet.hr/SCS, odnosno http://www.carnet.hr/scs/zahtjevi možete pronaći detaljne upute kako do certifikata doći. Cijeli postupak traje nekoliko dana, zbog slanja zahtijevanih formulara poštom, ali ste time riješili pitanje certifikata na dulje vrijeme. Kontakt e-mail je scs-ra@carnet.hr.

Ukoliko nemate pravo na SureServer certifikat, možete prijeći na točku 2.

Kako su na gore navedenim stranicama detaljno napisane sve upute, ovdje nećemo ponavljati iste informacije. Možete konzultirati točku 2.b) kako bi vidjeli kako se kreira zahtjev za certifikatom s više FQDN-ova, ali inače možete odmah skočiti na točku 3.

Još ćemo samo napomenuti:
- nemojte kriptirati ključ! (stavite "encrypt_key = no" u .cnf datoteci)
- rabite datoteku multiSCSreq.cnf, jer je vrlo izvjesno da ćete trebati više FQDN-ova u istom certifikatu

2. Samopotpisani (self-signed) certifikati

Samopotpisani certifikati omogućuju sigurnu komunikaciju, ali će korisnik morati potvrditi "da vjeruje vašem certifikatu" svaki put kad posjeti vaš site preko SSL-a. Kod drugih servisa ovaj problem nije tako izražen, odnosno krajni korisnici ne vide problem (HTTP, IMAP, POP3...). Popup prozor će se pojavljivati sve dok korisnik trajno ne prihvati certifikat izdan od strane vaše institucije.

Možemo napraviti:

a) certifikat za jedan DNS unos (FQDN - Fully Qualified Domain Name, puno ime poslužitelja)
b) certifikat za višestruke FQDN-ove

Preporučujemo da odmah izradite certifikate za sve poslužitelje koje imate ili koje ćete imati.

Kako možete znati koje ćete poslužitelje imati? Možete jednostavno staviti kakva generička imena (npr. geografske pojmove), ili ime poslužitelja podesiti prema njegovoj funkciji (mail, www, student i slično, a prijedloge smo dali u točki 2.b).

Zar ne postoje wildcard certifikati (*.domena.hr)? Postoje, ali njihova uporaba nije preporučljiva iz sigurnosnih razloga. Treba uzeti u obzir i da nijedna akademska institucija u HR neće imati više od nekoliko javno dostupnih servisa, stoga nema ni prevelike potrebe za wildcardovima.

2. a) certifikati za jedan FQDN

Certifikat možete kreirati za samo jedan FQDN na jednostavan način (navest ćemo tri primjera):

I) Najbrži način

Code:
# find /etc/apache -name server.\* | xargs rm
# dpkg-reconfigure apache-cn

Preko apachejeve install skripte generiramo nove certifikate, koji se obično nalaze u /etc/apache/ssl.* direktorijima (inače, svi se certifikati mogu prebaciti u /etc/ssl/certs direktorij). Ovakav postupak će kreirati potpuno novi certifikat, ali će uzeti u obzir samo osnovni FQDN. Dakle, ako vaš poslužitelj ima ime "server.domena.hr", i certifikat će glasiti na to ime, te primjerice https://www.domena.hr neće raditi (samo https://server.domena.hr).

Primjer za apache je specifičan, pa ćemo prikazati generičke slučajeve. Primjer za dovecot:

Code:
# cd /etc/ssl/certs
# rm `openssl x509 -noout -hash < dovecot.pem`.0
# rm dovecot.pem
# dpkg-reconfigure dovecot-cn

II) Uporaba skripte iz paketa apache-cn (vrijedi samo za apache!)

Kako automatsko generiranje certifikata uzima u obzir samo osnovno ime računala, skripta isporučena uz CARNetov paket apache-cn vam pomaže da zadate bilo koje ime koje će se naći u certifikatu (uz uvjet da je unešeno u DNS). Najčešće će to biti "www.domena.hr".

Code:
# /usr/share/apache-cn/carnet-generate-ssl /etc/apache www.domena.hr \
            root@domena.hr "Vasa Institucija"

III) Potpuno manualni način

Sve postupke iz gornjih točaka možete napraviti i ručno, uz možda malo više tipkanja:

Code:
# umask 0377
# cd /etc/ssl/certs
# rm `openssl x509 -noout -hash < dovecot.pem`.0
# rm dovecot.pem
# openssl req -new -x509 -days 3650 -nodes -out dovecot.pem \
   -keyout dovecot.key
Generating a 1024 bit RSA private key
.............................++++++
.....++++++
writing new private key to 'dovecot.key'
-----
You are about to be asked to enter information that
...
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:HR
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:Grad
Organization Name (eg, company) [Company]:Neka Institucija
Organizational Unit Name (eg, section) []:dom
Common Name (eg, YOUR name) []:server.domena.hr
Email Address []:root@domena.hr
Code:
# ln -sf dovecot.pem `openssl x509 -noout -hash < dovecot.pem`.0

Na gore opisani način možete generirati (odnosno obnoviti) certifikat za bilo koji servis.

2. b) certifikati za višestruke FQDN-ove

Za self-signed certifikate možete uporabiti istu datoteku kao i za kreiranje CT SureServer certifikata, multiSCSreq.cnf. U nju, u sekciji "[ req ]" dodajte redak "encrypt_key = no". Ona će tada izgledati poput ovog:

Code:
[ req ]
encrypt_key = no
default_bits = 2048
default_keyfile = keyfile.pem
distinguished_name = req_distinguished_name
#attributes = req_attributes
#prompt = no
#output_password = mypass

[ req_distinguished_name ]
countryName = Oznaka zemlje (dvoznakovni kod)
countryName_default = HR
countryName_min = 2
countryName_max = 2

localityName = Naziv lokacije (npr. grad)

organizationName = Naziv organizacije
organizationName_default = naziv ustanove

organizationalUnitName = Naziv organizacijske jedinice (npr. odjel)
organizationalUnitName_default = Internet

0.commonName = FQDN adresa posluzitelja
0.commonName_max = 64

1.commonName = FQDN adresa posluzitelja
1.commonName_max = 64

2.commonName = FQDN adresa posluzitelja
2.commonName_max = 64

#emailAddress = Email kontakt adresa
#emailAddress_max= 40

Brojeve (0.commonName, 1..., 2..., 3...) možete povećavati do broja poslužitelja koji vam treba, no nemojte pretjerivati. Predlažemo slijedeća imena (uz osnovno ime poslužitelja), no to naravno ovisi samo o vašim potrebama:

1. www
2. mail (pop, imap, smtp)
3. student
4. webmail
5. forum
6. sluzba_x (studentska služba ili slično) itd.

Više od 10-ak imena vam sasvim sigurno neće trebati, pogotovo ako rabite osnovno ime poslužitelja za više servisa (npr. "server.domena.hr" za mail, web i ostalo).

3. Ugrađivanje certifikata u mrežne servise

Preostaje samo certifikate uključiti u svaki servis koji mislite rabiti. Ovo ovisi o konkretnom načinu konfiguracije svakog servisa, a mi ćemo prikazati sve standardne servise koji se mogu susresti na CARNetovim poslužiteljima.

Certifikate je potrebno zaštititi prije instaliranja. To ćemo napraviti s naredbom (naravno, treba promijeniti ime datoteke po vašim potrebama):

Code:
# chmod 640 /etc/ssl/certs/dovecot.*
# chown root:root /etc/ssl/certs/dovecot.*

Drugim riječima, certifikat ne smije biti dostupan nikome osim rootu i korisniku pod čijim se UID-om servis vrti.

Apache 1.3

Konfiguracijska datoteka je /etc/apache/conf.d/ssl.conf.

Code:
SSLCertificateFile              /etc/ssl/certs/mojserver.pem
SSLCertificateKeyFile           /etc/ssl/certs/mojserver.key
SSLCertificateChainFile         /etc/ssl/certs/sureserverEDU.pem

Treba još samo restartati servis sa naredbama:

Code:
# /etc/init.d/apache stop
# /etc/init.d/apache start

Napomena: apache (barem u inačici 1.3) zahtijeva potpuno zaustavljanje, i ponovno pokretanje kako bi počeo rabiti certifikat.

Apache 2.x

Konfiguracijska datoteka nije nužno u /etc/apache/conf.d/ssl.conf, nego može biti u bilo kojem virtualnom poslužitelju. Obično će nakon instalacije apache2-cn SSL postavke ostati u datoteci /etc/apache2/sites-available/ssl ili slično. Ostala konfiguracija je identična, samo se treba uvjeriti da je virtualni poslužitelj sa SSL-om uključen:

Code:
# a2ensite ssl
Site ssl installed; run /etc/init.d/apache2 reload to enable.

Konfiguracija:

Code:
SSLCertificateFile              /etc/ssl/certs/mojserver.pem
SSLCertificateKeyFile           /etc/ssl/certs/mojserver.key
SSLCertificateChainFile         /etc/ssl/certs/sureserverEDU.pem

Treba još samo restartati servis sa naredbama:

Code:
# /etc/init.d/apache stop
# /etc/init.d/apache start

Napomena: apache obično zahtijeva potpuno zaustavljanje i ponovno pokretanje kako bi počeo rabiti certifikat.

Postfix

Konfiguracijska datoteka je /etc/postfix/main.cf.

Code:
smtp_use_tls = yes
smtp_tls_cert_file = /etc/ssl/certs/mojserver.pem
smtp_tls_key_file = /etc/ssl/certs/mojserver.key
smtp_tls_CAfile = /etc/ssl/certs/sureserverEDU.pem
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/certs/mojserver.pem
smtpd_tls_key_file = /etc/ssl/certs/mojserver.key
smtpd_tls_CAfile = /etc/ssl/certs/sureserverEDU.pem

Treba restartati servis sa:

Code:
# /etc/init.d/postfix reload

Dovecot 0.99

Konfiguracijska datoteka je /etc/dovecot/dovecot.conf.

Code:
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/mojserver.pem
ssl_key_file = /etc/ssl/certs/mojserver.key

Treba restartati servis sa:

# /etc/init.d/dovecot reload

Dovecot 1.0

Konfiguracijska datoteka je i dalje /etc/dovecot/dovecot.conf, ali je potrebno navesti i prijelazni certifikat.

Code:
ssl_disable = no
ssl_ca_file = /etc/ssl/certs/sureserverEDU.pem
ssl_cert_file = /etc/ssl/certs/mojserver.pem
ssl_key_file = /etc/ssl/certs/mojserver.key

I ovdje naravno treba restartati servis sa:

Code:
# /etc/init.d/dovecot reload

Vsftpd

Konfiguracijska datoteka je /etc/vsftpd.conf.

Code:
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/mojserver-key-cert.pem

Vsftpd zahtijeva da ključ i certifikat budu u jednoj datoteci, što možete napraviti sa

Code:
# cat mojserver.pem mojserver.key >> mojserver-key-cert.pem

Napravili smo posebnu datoteku kako ne bi potencijalno ometali druge servise koji traže da se ključ i certifikat nalaze u posebnim datotekama.

Sad možete restartati servis sa:

Code:
# /etc/init.d/vsftpd reload

Proftpd

Konfiguracijska datoteka je /etc/proftpd.conf.

 
Code:
<IfModule mod_tls.c>
    TLSEngine on
    TLSLog /var/log/proftpd/tls.log
    TLSProtocol SSLv23
    # Kod problema, stavite:
    # TLSProtocol TLSv1     

    # Are clients required to use FTP over TLS when talking to this server?
    TLSRequired off

    # Server's certificate
    TLSRSACertificateFile /etc/ssl/certs/mojserver.crt
    TLSRSACertificateKeyFile /etc/ssl/certs/mojserver.key
    # CA the server trusts - ako imate SureServer certifikat
    TLSCACertificateFile /etc/ssl/certs/ct_root.pem
    # Authenticate clients that want to use FTP over TLS?
    TLSVerifyClient off

    # Allow SSL/TLS renegotiations when the client requests them, but
    # do not force the renegotations.
    TLSRenegotiate required off
  </IfModule>

Servis nakon ovoga treba restartati sa:

Code:
# /etc/init.d/proftpd reload

4. Provjera ispravnosti instaliranih certifikata

Code:
# openssl s_client -connect mojserver.mojadomena.hr:443 -showcerts | less

Port 443 je port na kojem HTTPS servis radi, te ga morate promijeniti u odgovarajući za ostale servise (primjerice 993 za IMAPS, 443 za HTTPS, 995 za POP3S, itd).

Ispravan rad servisa označavaju DVA ulančana certifikata (pojavljuju se DVA zaglavlja -----BEGIN CERTIFICATE----- i -----END CERTIFICATE-----), poslužiteljski i prijelazni pomoću kojega SSL klijenti mogu uspostaviti lanac povjerenja.

5. Dodatne napomene

Datoteke certifikata i ključeva mogu imati različite nastavke (ekstenzije), no sve su one u PEM formatu (ostali mogu biti DER i PKCS12). Tako, u datoteci mojserver.pem može biti ključ, certifikat, ili čak i certifikat i ključ zajedno. Status možemo provjeriti otvaranjem dateoteka:

Code:
# grep BEGIN mojserver.pem
-----BEGIN CERTIFICATE-----
# grep BEGIN mojserver.key
-----BEGIN RSA PRIVATE KEY-----
# grep BEGIN mojserver-key-cert.pem
-----BEGIN RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----

Dakle, datoteke mogu imati različite nastavke, a sadržavati iste stvari. Ovo je bila samo brza provjera, detaljnije informacije možete naći uporabom naredbe openssl:

Code:
# openssl x509 -in /etc/ssl/certs/imapd.pem -noout -text | grep Subject:
        Subject: O=Dovecot mail server, OU=server.,
        CN=server.domena.hr/emailAddress=root@domena.hr

Dakle, radi se certifikatu za Dovecot za poslužitelj "server.domena.hr". Ako izostavite naredbu grep, dobit ćete punu informaciju o certifikatu.

Za certifikate s višestrukim FQDN-ima, pod retkom "X509v3 Subject Alternative Name" bi trebali pisati svi vaši poslužitelji koje ste odabrali.

Izgled generiranog zahtjeva za certifikatom (za provjeru prije nego ga pošaljete SCS timu) možete provjeriti s naredbom:

Code:
# openssl req -in mojserver.csr -text | less

Naravno, poželjno je dalje samostalno istražiti informacije.
Logged

Bavim se mreznom implementacijom - sistemac - Linux, CCNA, CCNP
Pages: [1]   Go Up
  Print  

 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC | Sitemap Valid XHTML 1.0! Valid CSS!
Page created in 0.135 seconds with 22 queries.

Google visited last this page 13.05.2012., 06:13:31