Előfeltételek
Biztonságos kiszolgálás HTTPS-en keresztül
Szerezzen be SSL/TLS-tanúsítványt
Konfigurálja webkiszolgálóját a privát kulcs és tanúsítvány használatára
Előfeltételek
- Egy Vultr-szerver, amely a legfrissebb Arch Linuxot futtatja (lásd ezt a cikket .)
- Egy futó webszerver, Apache vagy Nginx
- Sudo hozzáférés
- A rootként futtatandó parancsok előtagja a
#, és a normál felhasználóként futtatható parancsok előtagja $. A parancsok rootként való futtatásának javasolt módja az, hogy normál felhasználóként mindegyiket előtaggal írja elő sudo.
- Telepítsen egy szövegszerkesztőt, és ismerje meg, például vi, vim, nano, emacs vagy más hasonló szerkesztő.
Biztonságos kiszolgálás HTTPS-en keresztül
A HTTPS-en keresztüli tartalomszolgáltatás rendkívül erős titkosítást alkalmazhat, így a felhasználó és a webszerver közötti forgalmat senki sem tudja elolvasni. Nemcsak magát a forgalmat titkosítja, hanem az elért URL-t is, amely egyébként információkat fedhet fel. A Google egy ideje a HTTPS Everywhere kezdeményezés részeként részben az alapján határozza meg a keresési rangsort, hogy egy oldal használ-e HTTPS-t.
Megjegyzés : a DNS-keresés felfedi azt a tartománynevet, amelyhez kapcsolódik, de a teljes URL nem jelenik meg a folyamat során.
Szerezzen be SSL/TLS-tanúsítványt
Technikailag a TLS váltotta fel az SSL-t a HTTPS-tanúsítványok helyett, de a legtöbb helyen egyszerűen továbbra is a népszerűbb SSL-tanúsítványok kifejezéssel hívták a TLS-tanúsítványokat. A szokásos használatot követően ez az útmutató is ezt fogja tenni.
A HTTPS használatához a webszervernek szüksége van egy privát kulcsra ( .key) a privát használathoz, valamint egy tanúsítványra ( .crt) a nyilvános megosztáshoz, amely nyilvános kulcsot is tartalmaz. A tanúsítványt alá kell írni. Ön is aláírhatja, de a modern böngészők panaszkodni fognak, hogy nem ismerik fel az aláírót. Például a Chrome a következőt jeleníti meg: Your connection is not private. Attackers might be trying to steal your information... NET::ERR_CERT_AUTHORITY_INVALID. Ha csak egy privát csoport fogja használni a webhelyet, ez elfogadható lehet, mert a böngészők lehetővé teszik a továbblépést. Például a Chrome-ban kattintson a "Speciális", majd a "Tovább... (nem biztonságos)" lehetőségre; továbbra is a „Nem biztonságos” felirat jelenik meg, és a „https” áthúzódik.
Vegye figyelembe, hogy ez a folyamat kérni fogja az Ön országát, államát/ellátását, települését, szervezetét, szervezeti egységét, általános neveit és e-mail címét; ezek mindegyike elérhető bárki böngészőjében, aki HTTPS-en keresztül csatlakozik webhelyéhez.
Vegye figyelembe azt is, hogy ha virtuális gazdagép-tanúsítványokat ad meg, akkor alább külön fájlneveket kell megadnia, és rá kell mutatnia a virtuális gazdagép konfigurációjában.
Váltson be a webszerver megfelelő könyvtárába.
Ha telepítette az Apache-t:
$ cd /etc/httpd/conf
Ha telepítette az Nginxet:
$ cd /etc/nginx
Miután a megfelelő könyvtárba került, hozzon létre egy privát kulcsot ( server.key) és egy önaláírt tanúsítványt ( server.crt):
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 825
Állítson be csak olvasási jogosultságokat, és engedélyezze, hogy a privát kulcsot csak a root olvassa:
# chmod 400 server.key
# chmod 444 server.crt
Alternatív megoldásként beszerezhet egy megbízható tanúsító hatóság által aláírt tanúsítványt. Fizethet különböző cégeknek (hitelesítés-szolgáltatóknak), hogy aláírják a tanúsítványt. A tanúsító hatóságok mérlegelésekor fontos lehet megvizsgálni, hogy mely böngészők és melyik verzió ismeri fel őket. Előfordulhat, hogy néhány újabb tanúsító hatóság nem ismeri el hivatalosabbnak, mint egy önaláírt tanúsítvány a régi böngészőverziókban.
Általában nem csak nyilvános IP-címre van szüksége, hanem domain névre is. Egyes tanúsító hatóságok kiadhatnak tanúsítványt nyilvános IP-címekre, de ez ritkán történik meg.
Sok szolgáltató ingyenes 30 napos próbaverziót kínál, amellyel érdemes kezdeni, így még azelőtt megbizonyosodhat arról, hogy a folyamat működik az Ön számára. Az árak évi néhány dollártól több százig terjedhetnek, attól függően, hogy milyen típusról van szó, és milyen lehetőségek vannak, például több domain vagy aldomain. A szabványos tanúsítvány csak azt jelzi, hogy az aláíró hatóság ellenőrizte, hogy a tanúsítványt megszerző személy módosíthat a tartományon. A kiterjesztett érvényesítési tanúsítvány azt is jelzi, hogy az aláíró hatóság átvilágítást végzett a kérelmező tekintetében, és a modern böngészőkben egy zöld sáv jelenik meg az URL-ben vagy annak közelében. A domain módosításainak ellenőrzésekor egyes aláíró hatóságok megkövetelik, hogy e-mailt kapjon a domain név egy fontos hangzó címére, mint pl.admin@your-domain.com. Sokan alternatív ellenőrzést kínálnak, például adnak egy fájlt, amelyet el kell helyezni a kiszolgálón, például /srv/http/.well-known/pki-validation/az Apache vagy /usr/share/nginx/html/.well-known/pki-validation/az Nginx számára, egyetlen tárhely-konfigurációhoz; vagy ideiglenesen létrehoz egy CNAME bejegyzést, amelyet a domain DNS-rekordjaiban biztosítanak Önnek.
Az Ön által választott aláíró hatóság némileg eltérő lépésekből állhat, de a legtöbb elfogadja a következő eljárást:
A megfelelő könyvtárban hozzon létre egy privát kulcsot ( server.key):
# openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key
Állítsa a privát kulcsot írásvédettre, csak root által:
# chmod 400 server.key
Hozzon létre egy tanúsítvány-aláírási kérelmet ( server.csr). Meg kell adnia a domain nevét, amikor a rendszer kéri Common Name, és a kihívás jelszavát üresen hagyhatja:
# openssl req -new -sha256 -key server.key -out server.csr
Állítsa be a tanúsítvány-aláírási kérelmet írásvédettre, csak root által:
# chmod 400 server.csr
Tekintse meg a tanúsítvány-aláírási kérelem tartalmát. Ez az információ base64 kódolású, így véletlenszerű karaktereknek fog kinézni:
# cat server.csr
-----BEGIN CERTIFICATE REQUEST-----
.....
-----END CERTIFICATE REQUEST-----
Végezze el az aláíró hatóság folyamatát, és amikor a rendszer kéri, hogy illessze be a CSR-be, másolja ki és illessze be a teljes fájlt a -----sorokkal együtt. A választott aláíró hatóságtól és a tanúsítvány típusától függően előfordulhat, hogy azonnal kiadják Önnek az aláírt tanúsítványt, vagy akár több nap is eltelhet. Miután megkapta az aláírt tanúsítványt, másolja azt (beleértve a -----BEGIN CERTIFICATE-----és -----END CERTIFICATE-----sorokat is) server.crta megfelelő könyvtárba, a megfelelő könyvtárba, és állítsa csak olvashatóra:
# chmod 444 server.crt
Ha tűzfalat használ, engedélyeznie kell a bejövő TCP-forgalmat a portra 443.
Apache számára
Szerkessze /etc/httpd/conf/httpd.confezeket a sorokat, és törölje a megjegyzéseket:
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf
Ne feledje, ha virtuális gazdagépeket használ, a fenti módosítás végrehajtása /etc/httpd/conf/httpd.confugyanazt a tanúsítványt fogja használni minden gazdagépen. Ahhoz, hogy minden gazdagépnek saját tanúsítványa legyen, nehogy a böngészők panaszkodjanak arról, hogy a tanúsítvány nem egyezik a tartománynévvel, minden konfigurációs fájlt módosítania kell úgy, /etc/httpd/conf/vhosts/hogy a saját tanúsítványára és privát kulcsára mutasson:
Indítsa újra az Apache-ot:
# systemctl restart httpd
Az Nginx számára
Szerkessze /etc/nginx/nginx.confaz alján, törölje a megjegyzéseket a HTTPS serverszakaszból, és módosítsa a sorokat a következőre:
ssl_certificate server.crt;
ssl_certificate_key server.key;
root /usr/share/nginx/html;
Ne feledje, ha virtuális gazdagépeket használ, a fenti módosítással az /etc/nginx/nginx.confösszes gazdagépet erre a helyre küldi. Ahhoz, hogy minden gazdagépnek saját tanúsítványa legyen, szerkesztenie kell mindegyik konfigurációs fájlját, /etc/nginx/sites-enabled/hogy legyen egy további szerverblokk, amely a saját tanúsítványára és privát kulcsára mutat:
server {
listen 443 ssl;
server_name YOUR-DOMAIN-NAME.com;
ssl_certificate YOUR-DOMAIN-NAME.com.crt;
ssl_certificate_key YOUR-DOMAIN-NAME.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/YOUR-DOMAIN-NAME.com;
index index.html index.htm;
}
}
Indítsa újra az Nginxet:
# systemctl restart nginx