Changes

Apache - SSL

4,214 bytes added, 20:14, 29 August 2021
Apache beállítások
A titkos kapcsolat felépítése nagyon leegyszerűsítve a következő:
1. # A kliens küld egy kérést a szervernek, hogy SSL-el kapcsolódni akar hozzá. 2. # A szervernek van egy titkos és egy publikus kulcsa párja. Amit a publikus kulccsal valaki titkosít, azt csak a titkos kulccsal elehet dekódolni. A szerver visszaküldi a kliensnek a publikus kulcsát, valamint a titkosítási paramétereket, megállapodásokat. Természetesen ezt bárki láthatja aki hallgatózik a vonalon, de nem baj, nem tud vele semmit kezdeni. 3. # A kliens generál egy szimmetrikus kulcsot, amit titkosít a szerver publikus kulcsával. Ezt visszaküldi a szervernek. A szimmetrikus kulcsot kizárólag a szerver tudja kiolvasni, mivel csak nála van meg az aszimmetrikus titkos kulcs. A szerver kititkosítja az üzenetet, kiolvassa belőle a szimmetrikus kulcsot. 4. # A kliens és a szerver innentől kezdve a kliens által kitalált szimmetrikus kulcsot fogják használni az üzenetek titkosítására. Vagyis az aszimmetrikus szerver kulcsok csak arra kellenek, hogy a kliens eljuttassa a közös szimmetrikus kulcsot a szervernek, anélkül, hogy bárki erről tudomást szerezhetni.
A valóságban a kliens nem a végleges szimmetrikus kulcsot küldi el a szervernek, hanem egy paraméter halmazt, ami alapján a szerver és a kliens is létre tudja hozni ugyan azt a kulcsot. Miután a kliens és a szerver is létrehozták a kulcsot, küldenek egymásnak egy nyugtázó üzenetet az új titkosított kulccsal titkosítva, amivel jelzik egymásnak, hogy a titkos csatorna előállt.
:[[File:ClipCapIt-170311-225559.PNG]]
file:///home/adam/tmp/img1.png
 
==A szerver és kliens azonosítása ==
subject=/C=HU/L=Budapest/O=Berki Ugyvedi Iroda/CN=admin.berki2.org/emailAddress=info@berki2.org
Getting CA Private Key
</pre>
 
Ezzel előáll a szerver tanúsítványa:
<pre>
admin.berki2.org-server.cer
</pre>
{{tip|Ha itt nem használtuk volna a '''-sha256''' kapcsolót, akkor az SHA-2-es igénylő ellenére egy SHA-1-es tanúsítványt kaptunk volna. }}
 
Listázzuk ki a tanúsítvány attribútumait. Listázni a -text kapcsolóval lehet:
<pre>
# openssl x509 -in admin.berki2.org-server.sha2.cer -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 104 (0x68)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=HU, ST=Budapest, L=Budapest, O=Berki Ugyvedi Iroda, OU=BUI, CN=admin.berki2.org/emailAddress=info@berki2.org
Validity
Not Before: Dec 13 13:06:54 2017 GMT
Not After : Dec 11 13:06:54 2027 GMT
Subject: C=HU, ST=Budapest, L=Budapest, O=Berki Ugyvedi Iroda, OU=BUI, CN=admin.berki2.org/emailAddress=info@berki2.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
...
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:admin.berki2.org
Signature Algorithm: sha256WithRSAEncryption
...
</pre>
Két kritikus mező van:
# CN=admin.berki2.org/.. ''(ezt nézi a Firefox és a Chrome elsődlegesen)''
# X509v3 Subject Alternative Name: DNS:admin.berki2.org ''(ezt is nézi a Chrome az 58-as verziótól kezdve)''
===Kinél milyen kulcs van===
Kulcs neve
Hol van
Funkció
admin.berki2.org-server.key
szerver
A szerver ezzel titkosítja ki a kliens által küldött szimmetrikus kulcsot, amit a session alatt használni fognak.
admin.berki2.org-server.cer
szerver
A szerver tanúsítványa, mai tartalmazza a szerver publikus kulcsát, amivel a kliens titkosítja az általa kitalált szimmetrikus kulcsot, valamint a CA aláírását, ami alapján meggyőződhet a kliens, hogy a publikus kulcs tényleg a szerveré.
berki-ca.pem
Kliens böngészőjében
A Hitelesítés szolgáltató publikus kulcsa. Ezt a kliens böngészőjébe kell elhelyezni, a megbízható Hitelesítés szolgáltatók listájába. Ezzel a kulccsal tud meggyőződni a böngésző arról a szerver által küldött tanúsítvány hiteles.
 
 
{| class="wikitable sortable"
|-
! Kulcs neve !! Hol van !! Funkció
|-
| admin.berki2.org-server.key || szerver || A szerver ezzel titkosítja ki a kliens által küldött szimmetrikus kulcsot, amit a session alatt használni fognak.
|-
| admin.berki2.org-server.cer || szerver || A szerver tanúsítványa, mai tartalmazza a szerver publikus kulcsát, amivel a kliens titkosítja az általa kitalált szimmetrikus kulcsot, valamint a CA aláírását, ami alapján meggyőződhet a kliens, hogy a publikus kulcs tényleg a szerveré.
|-
| berki-ca.pem || Kliens böngészőjében/szerverben || A Hitelesítés szolgáltató publikus kulcsa. Ezt a kliens böngészőjébe kell elhelyezni, a megbízható Hitelesítés szolgáltatók listájába. Ezzel a kulccsal tud meggyőződni a böngésző arról a szerver által küldött tanúsítvány hiteles.
|}
==Kliens kulcsok==
Ahhoz hogy a böngészőnk elfogadja az összes tanúsítványt, amit a saját CA-nkal aláírtunk, a saját CA-nk publikus kulcsát (berki-ca.pem) importálni kell a böngészőbe a megbízható Hitelesítés szolgáltatók közé.
Firefox:
- * Preferences -> Advanced -> Certificates fül -> View Certificates gomb -> Authorities fül -> Import... gomb.
Ha a saját CA-nkat felvettük a megbízható szolgáltatók közé, akkor a böngészőnk az összes tanúsítványunkat el fogja fogadni, a kis lakat zöldre fog változni.
Ahhoz, hogy a szerver felé a böngésző autentikálni tudja magát, a saját titkos kulcsunkból és a saját tanúsítványunkból összecsomagolt pkcs12 fájlt importálni kell szintén a böngészőbe a saját tanúsítványaink közé (berki-client.p12).
Firefox:
- * Preferences -> Advanced -> Certificates fül -> View Certificates gomb -> Your Certificates fül -> Import...  = Apache beállítások =
Fel kell telepíteni az ssl modult az apache-hoz valamit az openssl programot, ha eddig ezt nem tettük volna meg.
# dnf install mod_ssl openssl
4 Apache SSL
yum install mod_ssl openssl
== Virtual ssl host elkészítése ==
<pre>
<VirtualHost *:443>
....
....
</VirtualHost>
</pre>
 
Ha valódi SSL szolgáltatót használunk, akkor gyakran meg kell adni egy tényleges ...
 
<br>
=NO-ip cert generálás=
 
Még mielőtt bármit is generálnánk, venni kell egy 1 éves cert-et a NOip oldalán. Amt még bármiféle generálás előtt ki kell fizetni.
:[[File:ClipCapIt-210829-215730.PNG]]
 
Most generálni kell egy '''Certificate Signing Request''' fájlt, amit majd fel kell tölteni a No-ip-re. Ehhez kel a szerver titkos kulcsa, semmi más:
<pre>
$ openssl req -new -sha256 -key wiki.berki.org-server.key -out wiki.berki.org-server-20210829.req
 
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) [XX]:HU
State or Province Name (full name) []:Pest
Locality Name (eg, city) [Default City]:Budapest
Organization Name (eg, company) [Default Company Ltd]:Berki corp
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:wiki.berki.org
Email Address []:info@berki.org
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
</pre>
A leges legfontosabb a '''Common Name''' mező, itt kell megadni a szerver teljes domain nevét.
<br>
 
Most előállt a '''wiki.berki.org-server-20210829.req''' fájl. Menjünk fel a no-ip felületére az '''SSL Certificates''' oldalra, ahol már vár ránk a félig megrendelt cert.
https://www.noip.com/support/knowledgebase/get-trustcor-premium-dv-ssl/
Itt kattintsunk az ADD csr gombra
:[[File:ClipCapIt-210829-220214.PNG]]
A megnyíló popup-ban másoljuk be a request teljes tartalmát, és a szerver típusa legyen: Apaceh mod ssl.
 
Ezen a ponton még nem fogja legenerálni a cert-t, most bizonyítani kell hogy tényleg miénk a domain. Ekkor létre fog hozni egy DNS txt rekordot, amit el kell helyezni a DNS beállításokban. De ha NO-ip-s domain nevünk van (ami jelen esetben igaz) akkor ezt ő kb 5 perc alatt elhelyezi a DNS-ben, nekünk ezzel külön nincs dolgunk.
 
Az SSL beállításokban a NO-ip oldalán a gomb Verify-ra változik:
:[[File:ClipCapIt-210829-220506.PNG]]
Ezt kell nyomkodni, addig amíg ki nem írja, hogy a dns verifikáció megtörtént, ekkor fogják csak aláírni a cert-et, amit majd emailben kb 10 perc után küldenek.
 
 
 
 
Az email-ben lesz egy letöltő gomb:
:[[File:ClipCapIt-210829-220604.PNG]]
5 Java keystoreAmi visszavisz a NO-ip ssl oldalára: :[[File:ClipCapIt-210829-220644.PNG]]