Ero sivun ”Openssl” versioiden välillä
(7 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
Rivi 20: | Rivi 20: | ||
mkdir /etc/ssl/localcerts | mkdir /etc/ssl/localcerts | ||
− | == | + | == Asentaminen lähdekoodista == |
Lataa uusin version lähdekoodista (Lataa täältä: https://www.openssl.org/source/) | Lataa uusin version lähdekoodista (Lataa täältä: https://www.openssl.org/source/) | ||
<pre> | <pre> | ||
− | wget https://www.openssl.org/source/openssl-1. | + | wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz |
− | tar -xvzf openssl- | + | tar -xvzf openssl-*.tar.gz |
− | cd openssl- | + | cd openssl-* |
./config --prefix=/usr/ | ./config --prefix=/usr/ | ||
make | make | ||
− | sudo make install | + | sudo make install |
+ | </pre> | ||
Tarkista version | Tarkista version | ||
Rivi 391: | Rivi 392: | ||
* -extensions v3_req -extfile /etc/ssl/openssl.cnf = Openssl konffi tiedosto, josta haetaan '''subjectAltName''' tiedot | * -extensions v3_req -extfile /etc/ssl/openssl.cnf = Openssl konffi tiedosto, josta haetaan '''subjectAltName''' tiedot | ||
− | == Bundle sertifikaatti == <!--T:89--> | + | == Muuta == |
+ | |||
+ | === Bundle sertifikaatti === <!--T:89--> | ||
<!--T:90--> | <!--T:90--> | ||
Rivi 415: | Rivi 418: | ||
copy EssentialSSLCA_2.crt + ComodoUTNSGCCA.crt + UTNAddTrustSGCCA.crt + AddTrustExternalCARoot.crt yourDomain.ca-bundle | copy EssentialSSLCA_2.crt + ComodoUTNSGCCA.crt + UTNAddTrustSGCCA.crt + AddTrustExternalCARoot.crt yourDomain.ca-bundle | ||
− | == Sertifikaattien siirto pfx-tiedoston avulla == <!--T:95--> | + | === Sertifikaattien siirto pfx-tiedoston avulla === <!--T:95--> |
<!--T:96--> | <!--T:96--> | ||
Rivi 432: | Rivi 435: | ||
* -certfile ssl.crt = Root sertifikaatti | * -certfile ssl.crt = Root sertifikaatti | ||
− | == CRT tiedosto konvertointi PEM == | + | === CRT tiedosto konvertointi PEM === |
Muunto onnistuu helposti komennolla | Muunto onnistuu helposti komennolla | ||
openssl x509 -in mycert.crt -out mycert.pem -outform PEM | openssl x509 -in mycert.crt -out mycert.pem -outform PEM | ||
+ | |||
+ | === Decrypt RSA privaattiavain === | ||
+ | |||
+ | Decrypt onnistuu helposti seuraavalla komennolla | ||
+ | |||
+ | openssl rsa -in key.key -out newkey.key | ||
== Katso lisää == <!--T:100--> | == Katso lisää == <!--T:100--> | ||
Rivi 448: | Rivi 457: | ||
http://linux.fi/wiki/OpenSSL | http://linux.fi/wiki/OpenSSL | ||
</translate> | </translate> | ||
− | |||
− |
Nykyinen versio 9. kesäkuuta 2018 kello 19.55
OpenSSL avoimen lähdekoodin on työkalu SSL v2/v3- ja TLS v1 -protokollien käsittelyyn. Sen avulla on myös mahdollista mm. luoda ja hallita julkisia ja yksityisiä salausavaimia, X.509-sertifikaatteja, laskea tarkistussummia ja käsitellä S/MIME-allekirjoitettuja tai -salattuja sähköposteja. HTTPS-salattu verkkosivusto voidaan toteuttaa OpenSSL:n ja esimerkiksi Apachen avulla. OpenVPN on OpenSSL:n avulla toteutettu, avoin VPN-protokolla.
Sisällysluettelo
Asennus
1. Asennetaan Openssl
aptitude install openssl
2. Luodaan kansio etc/ssl/localcerts . Tähän kansioon tallennetaan itseallekirjoitetut sertifikaatit joita luodaan tämän ohjeen aikana.
mkdir /etc/ssl/localcerts
Asentaminen lähdekoodista
Lataa uusin version lähdekoodista (Lataa täältä: https://www.openssl.org/source/)
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz tar -xvzf openssl-*.tar.gz cd openssl-* ./config --prefix=/usr/ make sudo make install
Tarkista version
openssl version
openssl.cnf
Laitetaan openssl.conf tiedostoon oletuskonffit helpottamaan myöhempää käyttöä. Voit muokata *_default nimellä olevat kohdat sopivilla vaihtoehdoilla. Tämä helpottaa kun alamme tekemään sertifikaattia. Tiedot voi muokata sertifikaatin asennuksen aikana
[ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = FI
Oletus maa-asetus (maakoodi), esim. FI
countryName_min = 2 countryName_max = 2
Määritä lääni/provinssi, esim. Uusimaa
stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Lääni/Provinssi
Kaupungin nimi, esim. Helsinki
localityName = Locality Name (eg, city) localityName_default = Kaupunki
Organisaation nimi, esimerkiksi yritys
0.organizationName = Organization Name (eg, company) 0.organizationName_default = Organisaation nimi
Toinen organisaation nimi (vapaaavalintainen)
# we can do this but it is not needed normally :-) #1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section) #organizationalUnitName_default =
Sertifikaatille nimi (verkko-osoite)
commonName = Common Name (e.g. server FQDN or YOUR name) commonName_max = 64
Sähköpostiosoite ssl sertifikaatilla (valinnainen).
emailAddress = Email Address emailAddress_max = 64 emailAddress_default = [email protected]
Määritettyjä *_default ei tarvitse määrittää etukäteen mutta suositeltavaa on. Tämä helpottaa sertifikaatin tekoa.
Lisäominaisuuksia
Sertifikaattiin on mahdollista listätä erilaisia ominaisuuksia. Yleisesti ja kätevä on ollut Subject Alt Name joka mahdollistaa sertifikaatin toimivuuden useilla eri domaineilla ja IP-osoitteilla.
Subject Alt Name
Lisätään subjectAltName = @alt_names konffi tiedostoon. (Alla olevassa esimerkissä muitakin tietoja)
[ v3_req ]
#Extensions to add to a certificate request
keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names
Lisää alt_names konffiin ja verkko-osoitteet, jossa sertifikaatti on voimassa
[alt_names] DNS.1 = helenius.dy.fi DNS.2 = datatekniikka.fi
ja IP-osoiteet jossa sertifikaatti voimassa.
IP.1 = 0.0.0.0 IP.2 = 1.1.1.1
CRL
Määritä nämä openssl.conf tiedostossa:
database = /etc/ssl/*/index.txt crlnumber = /etc/ssl/*/crlnumber # the current crl number
Poista risuaita:
crl_extensions = crl_ext
default_days = 365 # how long to certify for default_crl_days= 30 # how long before next CRL
ja muuta:
default_md = sha256 # which md to use. preserve = no # keep passed DN ordering
Lisää tämä ->
[ v3_req ] #Extensions to add to a certificate request crlDistributionPoints = URI:http://www.example.com/crl.crl
Määritetään crl tiedosto joka täytyy löytyä osoitteesta.
Luo kansio
mkdir -p /etc/ssl/keys
Luodaan tiedosto:
echo 1 > /etc/ssl/keys/index.txt
Luodaan crl tiedosto:
openssl ca -keyfile rootCA.key -cert rootCA.crt -gencrl -out rooCA.crl
Muuta lisättävää...
[ v3_req ] #Extensions to add to a certificate request extendedKeyUsage = serverAuth,clientAuth authorityInfoAccess = OCSP;URI:http://www.example.com
Esimerkkejä SubjectAltName
Kaikki numeroidaan loogisesti erikseen... Openssl ei ilmoita virheitä numeroinnista, vaan menee aina alimman mukaan (lukee päälle)
DNS.1 = *.domain.com
Wildcard eli suomeksi jokeri, on sertifikaatti joka on voimassa kaikissa alidomaineissa. Esimerkiksi: www.domain.com ja m.domain.com on automaattisesti wildcard alla... HUOM! Ei domain.com ja www.name.domain.com ole wildcard sertifikaatissa.
DNS.2 = domain.com
Ylätason domain
DNS.3 = www.domain.com
Alidomain, esim. www.domain.com ja m.domain.com.
DNS.4 = www.domain2.com
Sertifikaatit voi osoittaa usealle eri domainille.
IP.1 0.0.0.0.
Laitetaan IP-osoiteet, missä sertifikaatti on voimassa.
IP.2 1.1.1.1
Myös useita IP-osoitteita voi määrittää
Konffit
[ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = FI countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Lääni/Provinssi localityName = Locality Name (eg, city) localityName_default = Kaupunki 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Organisaation nimi # we can do this but it is not needed normally :-) #1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = World Wide Web Pty Ltd organizationalUnitName = Organizational Unit Name (eg, section) #organizationalUnitName_default = commonName = Common Name (e.g. server FQDN or YOUR name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 emailAddress_default = [email protected]
[ v3_req ] #Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = helenius.dy.fi DNS.2 = datatekniikka.fi IP.1 = 0.0.0.0 IP.2 = 1.1.1.1
RootCA - Root sertifikaatti
1. Luodaan RSA avain
openssl genrsa -des3 -out /etc/ssl/localcerts/rootCA.key 4096
- des3 = salasana suojattu
- rootCA.key = tiedoston nimi
- 4096 = RSA avaimen pituus
Komento luo RSA avaimen ja tallentaa tiedostoon
Generating a 4096 bit RSA private key ............................................+++ .................................................+++ writing new private key to 'rootCA.key'
2. Luodaan ROOT sertifikaatti
openssl req -sha256 -x509 -new -nodes -key /etc/ssl/localcerts/rootCA.key -days 3650 -out /etc/ssl/localcerts/rootCA.crt
- -days = sertifikaatin voimassaoloaika, esimerkissä 10 vuotta
- -key = tiedosto jossa RSA avain sijaitsee
- -key rootCA.key RSA avain tiedosto, jonka loit aikaisemmin
- -out rootCA.crt = sertifikaatti tiedosto
Komento tulostaa ja sinun tulee täyttää tietyt kohdat. Jos sulkeiden [] sisällä vastaa määrittämääsi, voit jättää kentät tyhjäksi.
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. ----
Määritä maakoodi:
Country Name (2 letter code) [FI]:
Määritä Osavaltio tai provinssi:
State or Province Name (full name) []: Uusimaa
Määritä sijainti, esimerkiksi kaupunki:
Locality Name (eg, city) []: Helsinki
Määritä organisaatiosi nimi, esimerkiksi yritys:
Organization Name (eg, company) [My Company Ltd]:Taistowiki Certificate Authority
Määritä organisaation yksikön nimi:
Organizational Unit Name (eg, section) []:
Määritä esimerkiksi palvelimesi isäntänimi:
Common Name (eg, your name or your server's hostname) []:taistowiki.fi
Määritä sähköpostiosoite:
Email Address []:[email protected]
Nyt ROOT sertifikaatti on luotu ja valmiina käytettäväksi.
Asiakas sertifikaatit
Sinun tulee luoda ROOT sertifikaatti ensin
1. Luodaan RSA avain
openssl genrsa -des3 -out /etc/ssl/localcerts/ssl.key 2048
- des3 = salasana suojattu
- ssl.key = tiedoston nimi
- 2048 = RSA avaimen pituus
Openssl on bugi jos laittaa alisertifikaateille salasana suojaus ja käyttää wildcard ominaisuutta.
2. Luodaan sertifikaatin allekirjoituspyyntö
openssl req -new -out ssl.csr -key /etc/ssl/localcerts/ssl.key -config /etc/ssl/openssl.cnf
3. Luodaan sertifikaatti ROOT sertifikaatin alle
openssl x509 -req -sha256 -in /etc/ssl/localcerts/ssl.csr -CA /etc/ssl/localcerts/rootCA.crt -CAkey /etc/ssl/localcerts/rootCA.key -CAcreateserial -out /etc/ssl/localcerts/ssl.crt -days 365 -extensions v3_req -extfile /etc/ssl/openssl.cnf
- -sha256 = Käytetään SHA256, suositus
- -days 365 = sertifikaatin voimassaoloaika
- -extensions v3_req -extfile /etc/ssl/openssl.cnf = Openssl konffi tiedosto, josta haetaan subjectAltName tiedot
Muuta
Bundle sertifikaatti
Esimerkissämme on käytettävä SSL sertifikaatit:
- Root CA Certificate - AddTrustExternalCARoot.crt
- Intermediate CA Certificate 1 - UTNAddTrustSGCCA.crt
- Intermediate CA Certificate 2 - ComodoUTNSGCCA.crt
- Intermediate CA Certificate 3 - EssentialSSLCA_2.crt
- Your SSL Certificate - yourDomain.crt
jotka pitäisi saada samalle palvelimelle. Bundle Crt mahdollistaa yhteen sertifikaatti tiedostoon useita sertifikaatteja.
Linux:
cat EssentialSSLCA_2.crt ComodoUTNSGCCA.crt UTNAddTrustSGCCA.crt AddTrustExternalCARoot.crt > yourDomain.ca-bundle
Windows:
copy EssentialSSLCA_2.crt + ComodoUTNSGCCA.crt + UTNAddTrustSGCCA.crt + AddTrustExternalCARoot.crt yourDomain.ca-bundle
Sertifikaattien siirto pfx-tiedoston avulla
Openssl sertifikaattia voidaan käyttää myös muillakin webbiservereillä. Voit siirtää mm. IIS:ään pfx tiedoston avulla.
openssl pkcs12 -export -out ssl.pfx -inkey ssl.key -in ssl.crt -certfile rootCA.crt
Sinun tulee määrittää tiedostoon salasana.
- -export -out ssl.pfx = PFX tiedosto jonne sertifikaatit laitetaan
- -inkey ssl.key = RSA avain tiedosto
- -certfile ssl.crt = Root sertifikaatti
CRT tiedosto konvertointi PEM
Muunto onnistuu helposti komennolla
openssl x509 -in mycert.crt -out mycert.pem -outform PEM
Decrypt RSA privaattiavain
Decrypt onnistuu helposti seuraavalla komennolla
openssl rsa -in key.key -out newkey.key