Openssl ja Subject Alternative Name
Autor
Rain Adamson, AK31
Kevad 2015
Sissejuhatus
Käesoleva artikli eesmärk on tutvustada,kuidas saab OpenSSL Subject Alternative Name'i (SAN ) kasutades genereerida sertifikaate mis võimaldaks kasutada samas serveris ühte serftifikaati mitmel erineva domeeniga. Vaikimisi on probleemiks, et iga SSL kasutav virtual host vajaks oma IP aadressi. SAN kasutamine aitab aga sellest mööda minna. Ühtlasi on see ka kasulik näiteks kui SSL veebisait peaks kättesaadav olema nii http://www.sait.ee kui ka http://sait.ee kujul, ilma et me peaks selleks uut sertifikaati kasutama. Võrreldes wildcard sertifikaadiga mis võimaldaks ühe sertifikaadiga katta näiteks kõik aadressid mis langeks mustri alla *.sait.ee
võimaldab SAN kasutav sertifikaat lisada ka täiesti teisi domeeni nimesi näiteks sait.ee ja midagimuud.ee. Wildcard sertifikaaat võimaldaks katta vaid ühe domeeni. Teine alternatiiv oleks kasutada SNI (Server Name Indication ) kuid selle tugi võib puududa vanemates brauserites ja rakendustes.
Eeldused
Soovitav on tutvuda praktika juhendi https://wiki.itcollege.ee/index.php/Veebiserveri_labor_v.2 peatükiga "SSL_keskkonna_loomine". Kuna Apache seadistamist SSL'iga siin referaadis põhjalikult ei käsitleta.
Töö kirjutaja kasutas Ubuntu Server 14.04.2 LTS versiooni. Kuid kõik peaks toimima ka teistes Linuxi distributsioonides.
Vajalikud tarkvarapaketid :
OpenSSL
BIND - loodud 3 alamdomeeni: sait1.sahver.zz,sait2.sahver.zz ja sait3.sahver.zz või kantud need sisse hosts faili.
Apache2 - seadistatud on eelnevalt nimetatud domeenidele virtual hostid ning olemas SSL tugi.
Ülesanne
Meil on veebiserver kolme alamdomeeniga ning kõik nad peaks töötama üle SSL'i .Eeldame, et veebiserver on meil SSL'iga töötamiseks juba seadistatud ja peame seadistusfaili lisama vaid sertifikaadi.
Sertifikaadi genereerimine
Loome /etc/apache2 kataloogi uue alamkataloogi certs ning edasist tööd jätkame selles.
mkdir /etc/apache2/certs cd /etc/apache2/certs
Genereerime serverile võtmepaari. Küsimusele kuhu salvestada vastame /etc/apache2/certs/id_rsa.key
ssh-keygen -t rsa -b 1024
Selless, et luua sertikitaati mis kasutaks subject alternative name'e tuleb meil kohandada OpenSSL seadistusfaili. Selleks, et mitta vaikeseadistust muutma asuda loome SAN toega sertifikaadi loomiseks uue seadistusfaili.
Kopeerime OpenSSL vaikimisi seadistusfaili oma kodukataloogi cp /etc/ssl/openssl.cnf ~/openssl.cnf
ja teeme seal paar muudatust. :
[ req ] sektsioonis
kommenteerime sisse või vajadusel lisame järgneva rea:
req_extensions = v3_req
Lisame [ v3_req ]
sektsiooni lõppu rea
subjectAltName = @alt_names
Ning loome [ v3_req ]
järele uue sektsiooni kus loetleme soovitud domeenid / alamdomeenid mida soovime soovime kasutada.
[alt_names] DNS.1 = sait1.sahver.zz DNS.2 = sait2.sahver.zz DNS.3 = sait3.sahver.zz
Loome sertifikaadi taotluse faili ning kasutame selleks meie eelnevalt kohandatud seadistusfaili. Alltoodavatele küsimustele saab vajadusel eelnevalt loodud openssl.cnf faili [ req_distinguished_name ]
sektsioonis ise määrata ka vaikevastused kui peaks tarvis olema tihti sertifikaate luua. Common name võiks märkida näiteks sahver.zz domeeni kui seda ka virtual hostina kasutaksime, hetkel aga kasutame sait1.sahver.zz.
openssl req -new -key id_rsa.key -out veebid_san.csr -config openssl.cnf
väljund peaks olema sarnane:
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:ET State or Province Name (full name) [Some-State]:Harjumaa Locality Name (eg, city) []:Tallinn Organization Name (eg, company) [Internet Widgits Pty Ltd]:Surra Murra Organizational Unit Name (eg, section) []:IT Common Name (e.g. server FQDN or YOUR name) []:www.sait1.sahver.zz Email Address []:webmaster@sahver.zz Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Kui soovime veenduda, et taotluse loomine õnnestus võime kasutada järgnevat käsku.
openssl req -in veebid_san.csr -noout -text
Allkirjastame serveri privaatvõtmega eelenvalt loodud sertifikaaditaotluse.
openssl x509 -req -extensions v3_req -days 365 -in veebid_san.csr -signkey id_rsa.key -out veebid.crt -extfile openssl.cnf
Sertifikaadi testimine
Võtame loodud sertifikaadi apache virtualhostides kasutusele. Ehk vastavate Apache virtual hostide SSL seadistustes määrame, et kasutataks vast loodud sertifikaati.
SSLCertificateFile /etc/apache2/certs/veebid.crt SSLCertificateKeyFile /etc/apache2/certs/id_rsa.key
Nüüd peale veebiserveri taaskäivitamist peaks olema võimalik kõiki veebilehti millele me sertifikaadi lõime külastada ja testida kas sertifikaat töötab. Kui näiteks https://sait2.sahver.zz lehel olles Firefoxis sertifikaati lähemalt vaadata peaks avanema järgmine pilt:
Kokkuvõte
Tegu kasuliku lahendusega, kuna mõnel juhul võib mõistlik olla mitme sertifikaadi soetamise asemel kasutada vaid ühte. Ka võib olla lihtsalt olukord on saadaval vaid üks IP aadress ja on vaja SSL kasutada mitme erineva virtual hosti juures.
Kasutatud kirjandus
http://wiki.cacert.org/FAQ/subjectAltName https://www.openssl.org/docs/apps/x509v3_config.html https://rtcamp.com/wordpress-nginx/tutorials/ssl/multidomain-ssl-subject-alternative-names/