Parakushtet
Shërbim i sigurt përmes HTTPS
Merrni certifikatën SSL/TLS
Konfiguro serverin tuaj të uebit për të përdorur çelësin privat dhe certifikatën
Parakushtet
- Një server Vultr që funksionon i përditësuar Arch Linux (shih këtë artikull .)
- Një server në internet që funksionon, ose Apache ose Nginx
- Qasje Sudo
- Komandat që kërkohen për t'u ekzekutuar si rrënjë parashtesohen nga
#, dhe ato që mund të ekzekutohen si përdorues të rregullt nga $. Mënyra e rekomanduar për të ekzekutuar komandat si rrënjë është që, si përdorues i rregullt, të parashtesësh secilën prej tyre me sudo.
- Keni të instaluar një redaktues teksti dhe njihuni me të, si p.sh. vi, vim, nano, emacs ose një redaktues tjetër të ngjashëm.
Shërbim i sigurt përmes HTTPS
Shërbimi i përmbajtjes nëpërmjet HTTPS mund të përdorë enkriptim jashtëzakonisht të fortë, kështu që askush që përgjon trafikun midis përdoruesit dhe serverit të uebit nuk mund ta lexojë atë. Ai jo vetëm që kodon vetë trafikun, por edhe URL-në që aksesohet, e cila përndryshe mund të ekspozojë informacionin. Për disa kohë, Google ka përcaktuar pjesërisht renditjen e kërkimit bazuar në faktin nëse një faqe përdor HTTPS, si pjesë e nismës HTTPS Everywhere.
Shënim : një kërkim DNS ekspozon emrin e domenit me të cilin është lidhur, por e gjithë URL-ja nuk ekspozohet gjatë atij procesi.
Merrni certifikatën SSL/TLS
Teknikisht, TLS zëvendësoi SSL-në për Certifikatat HTTPS, por shumica e vendeve thjesht vazhduan të thërrisnin Certifikatat TLS me termin më të njohur Certifikata SSL. Pas përdorimit të zakonshëm, ky udhëzues do të bëjë të njëjtën gjë.
Për të përdorur HTTPS, serveri juaj i uebit ka nevojë për një çelës privat ( .key) që ai ta përdorë privatisht dhe një certifikatë ( .crt) për ta ndarë publikisht, e cila përfshin një çelës publik. Duhet të nënshkruhet një certifikatë. Mund ta nënshkruani vetë, por shfletuesit modernë do të ankohen se nuk e njohin nënshkruesin. Për shembull, Chrome do të tregojë: Your connection is not private. Attackers might be trying to steal your information... NET::ERR_CERT_AUTHORITY_INVALID. Nëse vetëm një grup privat njerëzish do të përdorin faqen e internetit, kjo mund të jetë e pranueshme, sepse shfletuesit do të lejojnë një mënyrë për të vazhduar. Për shembull, në Chrome, klikoni "Advanced", pastaj "Vazhdo te... (i pasigurt)"; do të vazhdojë të tregojë "Jo i sigurt" dhe do të kalojë "https".
Vini re se ky proces do t'ju kërkojë vendin, shtetin/provincën, lokalitetin, organizatën, njësinë organizative dhe emrat e zakonshëm dhe adresën tuaj të emailit; të gjitha këto janë të aksesueshme në shfletuesin e kujtdo që lidhet me faqen tuaj nëpërmjet HTTPS.
Vini re gjithashtu se nëse po jepni certifikata të hosteve virtuale, do t'ju duhet të jepni emra të ndryshëm skedarësh më poshtë dhe t'i tregoni ato në konfigurimet tuaja të hostit virtual.
Ndryshoni në drejtorinë e duhur për serverin tuaj të internetit.
Nëse keni instaluar Apache:
$ cd /etc/httpd/conf
Nëse keni instaluar Nginx:
$ cd /etc/nginx
Pasi të jeni në drejtorinë e duhur, gjeneroni një çelës privat ( server.key) dhe certifikatë të vetë-nënshkruar ( server.crt):
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 825
Vendosni lejet vetëm për lexim dhe lejoni që çelësi privat të lexohet vetëm me rrënjë:
# chmod 400 server.key
# chmod 444 server.crt
Përndryshe, mund të merrni një certifikatë të nënshkruar nga një autoritet certifikues i besuar. Ju mund të paguani kompani të ndryshme (autoritetet e certifikimit) për të nënshkruar certifikatën tuaj për ju. Kur merren parasysh autoritetet e certifikatave, mund të jetë e rëndësishme të shikoni se cilët shfletues dhe cilët versione do t'i njohin ato. Disa autoritete më të reja të certifikatave mund të mos njihen si më zyrtare se një certifikatë e vetë-nënshkruar në versionet e vjetra të shfletuesit.
Zakonisht ju nevojitet jo vetëm një adresë IP publike, por edhe një emër domaini. Disa autoritete certifikate mund të lëshojnë një certifikatë në një adresë IP publike, por kjo bëhet rrallë.
Shumë ofrues ofrojnë një provë falas 30 ditore, me të cilën rekomandohet të filloni, në mënyrë që të siguroheni që procesi të funksionojë për ju përpara se të paguani për të. Çmimet mund të ndryshojnë nga disa dollarë në vit në qindra, në varësi të llojit të tij dhe opsioneve të tilla si domene të shumta ose nën-domanë. Një certifikatë standarde do të tregojë vetëm se autoriteti nënshkrues ka verifikuar se personi që merr certifikatën mund të bëjë ndryshime në domen. Një certifikatë validimi e zgjatur do të tregojë gjithashtu se autoriteti nënshkrues ka kryer një kontroll të duhur për verifikimin e kërkuesit dhe, në shfletuesit modernë, do të tregojë një shirit të gjelbër brenda ose pranë URL-së. Kur verifikoni që mund të bëni ndryshime në domen, disa autoritete nënshkruese do t'ju kërkojnë të merrni email në një adresë të rëndësishme që tingëllon në emrin e domenit, si p.sh.admin@your-domain.com. Shumë prej tyre ofrojnë verifikim alternativ, si p.sh. t'ju japin një skedar për ta vendosur në serverin tuaj, si p.sh. vendosja e skedarit të tyre /srv/http/.well-known/pki-validation/për Apache ose /usr/share/nginx/html/.well-known/pki-validation/për Nginx, për konfigurimin e direktoriumit pritës të vetëm; ose duke krijuar përkohësisht një hyrje CNAME që ju ofrojnë në të dhënat DNS të domenit tuaj.
Autoriteti nënshkrues që zgjidhni mund të ketë hapa paksa të ndryshëm, por shumica do të pranojnë procedurën e mëposhtme:
Në drejtorinë e duhur, gjeneroni një çelës privat ( server.key):
# openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key
Vendosni çelësin privat në vetëm për lexim, vetëm me rrënjë:
# chmod 400 server.key
Krijo një kërkesë për nënshkrimin e certifikatës ( server.csr). Ju duhet të vendosni emrin e domenit tuaj kur ju kërkon Common Name, dhe mund ta lini bosh fjalëkalimin e sfidës:
# openssl req -new -sha256 -key server.key -out server.csr
Vendosni kërkesën për nënshkrimin e certifikatës në vetëm për lexim, vetëm me rrënjë:
# chmod 400 server.csr
Shikoni përmbajtjen e kërkesës për nënshkrimin e certifikatës. Ky informacion është i koduar në bazë64, kështu që do të duket si karaktere të rastësishme:
# cat server.csr
-----BEGIN CERTIFICATE REQUEST-----
.....
-----END CERTIFICATE REQUEST-----
Kaloni përmes procesit të autoritetit tuaj të nënshkrimit dhe kur ju kërkohet të ngjitni në CSR-në tuaj, kopjoni dhe ngjisni të gjithë këtë skedar duke përfshirë -----rreshtat. Në varësi të autoritetit nënshkrimor që keni zgjedhur dhe llojit të certifikatës, ata mund t'ju japin menjëherë certifikatën e nënshkruar, ose mund të jetë një numër ditësh. Pasi t'ju japin certifikatën e nënshkruar, kopjoni atë (duke përfshirë rreshtat -----BEGIN CERTIFICATE-----dhe -----END CERTIFICATE-----) në një skedar me emrin server.crt, në drejtorinë e duhur, të dhënë më lart për serverin tuaj të internetit, dhe vendoseni në vetëm për lexim:
# chmod 444 server.crt
Nëse jeni duke përdorur një mur zjarri, do t'ju duhet të aktivizoni trafikun hyrës TCP në port 443.
Për Apache
Ndryshoni /etc/httpd/conf/httpd.confdhe anuloni këto rreshta:
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf
Vini re nëse jeni duke përdorur host virtual, duke bërë ndryshimin e mësipërm në /etc/httpd/conf/httpd.confdo të përdorni të njëjtën certifikatë në të gjithë hostet. Për t'i dhënë secilit host certifikatën e vet për të shmangur ankesat e shfletuesve për certifikatën që nuk përputhet me emrin e domenit, duhet të modifikoni secilin prej skedarëve të konfigurimit të tyre /etc/httpd/conf/vhosts/për të treguar certifikatën e vet dhe çelësin privat:
- Ndrysho
<VirtualHost *:80>në <VirtualHost *:80 *:443>.
Brenda VirtualHostseksionit, shtoni sa vijon:
SSLEngine on
SSLCertificateFile "/etc/httpd/conf/YOUR-DOMAIN-NAME.com.crt"
SSLCertificateKeyFile "/etc/httpd/conf/YOUR-DOMAIN-NAME.com.key"
Rinis Apache:
# systemctl restart httpd
Për Nginx
Ndryshoni /etc/nginx/nginx.confdhe afër fundit, hiqni komentin nga HTTPS serverseksioni dhe ndryshoni rreshtat në vijim:
ssl_certificate server.crt;
ssl_certificate_key server.key;
root /usr/share/nginx/html;
Vini re nëse jeni duke përdorur host virtual, duke bërë ndryshimin e mësipërm në /etc/nginx/nginx.confdo t'i dërgoni të gjithë hostet në atë vendndodhje. Për t'i dhënë secilit host certifikatën e tij, duhet të modifikoni secilin prej skedarëve të konfigurimit të tij /etc/nginx/sites-enabled/për të pasur një bllok server shtesë për të treguar certifikatën e tij dhe çelësin privat:
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;
}
}
Rinisni Nginx:
# systemctl restart nginx