Lielākā daļa tīmekļa serveru, piemēram, nginx un apache, pēc noklusējuma klausās 80. portā, un, pirms tie sāk izmantot sertifikātus, lai šifrētu trafiku, ir nepieciešama diezgan daudz konfigurācijas. Neskatoties uz tā konfigurēšanu, tīmekļa serveris joprojām var apkalpot HTTP trafiku. Tātad jūsu vietnes apmeklētāji vienkārši ierakstīs http: // example.com, nevis https: // piemērs.com un visa datplūsma viņiem paliks nešifrēta. Lai apietu šo problēmu, mums ir jākonfigurē HTTP serveri tā, lai viņi paši visu HTTP novirzītu uz HTTPS.
Manā iestatījumā tiek izmantots FQDN ar publisku IP, tāpēc es izsniegšu SSL sertifikātu no LetsEncrypt, nevis izsniedzu pats parakstītu. Atkarībā no izmantotā tīmekļa servera veida to varat izdarīt vairākos veidos. Bet tā vispārējā plūsma ir šāda:
- Iegūstiet parakstītu sertifikātu no CA. Mūsu gadījumā tas būs LetsEncrypt
- Konfigurējiet tīmekļa serveri izmantot šifrēšanas atslēgu, lai šifrētu izejošo HTTP trafiku 443. portā. Šī ir noklusējuma HTTPS ports.
- Novirziet visus ienākošos pieprasījumus 80. portā (kas ir nešifrēts HTTP) uz 443. portu, tādējādi ļaujot šifrētas sesijas visiem ienākošajiem savienojumiem.
Parādīsim dažādus veidus, kā sasniegt vēlamo. Pirmais ir vienkāršākais risinājums, kas izmanto Certbot.
1. Vieglākais veids - Certbot spraudņu izmantošana Nginx vai Apache
Es šim serverim izmantošu Nginx kā piemēru. Ja jūs izmantojat citu, piemēram, Apache vai HAProxy, vienkārši apmeklējiet Certbot oficiālo lapu un izvēlieties savu OS un izvēlēto tīmekļa serveri. Nginx operētājsistēmā Ubuntu 18.04, šīs ir komandas, kas jums nepieciešamas.
Vispirms atjauniniet repo indeksu.
$ sudo apt-get atjauninājums$ sudo apt-get install software-properties-common
Jums būs jāpievieno nepieciešamās trešo pušu krātuves, kuras, iespējams, Ubuntu pēc noklusējuma nav iespējojis.
$ sudo add-apt-repository Visums$ sudo add-apt-repository ppa: certbot / certbot
$ sudo apt-get atjauninājums
Pēc tam instalējiet certbot pakotni ar Nginx spraudņiem, izmantojot zemāk esošo komandu.
$ sudo apt-get install certbot python-certbot-nginxInstrukcija dažādām platformām būs atšķirīga, un, ja iespējams, instalējiet spraudņus tīmekļa serverim. Spraudņi ļoti atvieglo mūsu dzīvi tāpēc, ka tie var automātiski rediģēt konfigurācijas failus tīmekļa serverī, lai arī novirzītu trafiku. Negatīvie aspekti varētu būt tādi, ka, ja jūs izmantojat ļoti pielāgotu serveri iepriekšējai vietnei, tad spraudnis var salauzt dažas lietas.
Jaunām vietnēm vai ļoti vienkāršām konfigurācijām, piemēram, reverse proxy, spraudnis darbojas pārsteidzoši labi. Lai iegūtu sertifikātus un novirzītu datplūsmu, vienkārši palaidiet zemāk esošo komandu un izpildiet dažādas interaktīvās opcijas, kamēr pakete iziet cauri tām.
$ sudo certbot --nginxIzeja:
certbot - ninksAtkļūdošanas žurnāla saglabāšana mapē / var / log / letsencrypt / letsencrypt.žurnāls
Atlasītie spraudņi: Authenticator nginx, Installer nginx
Ievadiet e-pasta adresi (tiek izmantota steidzamai atjaunošanai un drošības paziņojumiem) (ievadiet “c” t
atcelt): JŪSU PASŪTĪTĀJS @ PIEMĒRS.COM
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lūdzu, izlasiet pakalpojumu sniegšanas noteikumus vietnē
https: // ļaujšifrēt.org / dokumenti / LE-SA-v1.2.-novembris-15-2017.pdf. Tev vajag
vienoties, lai reģistrētos ACME serverī vietnē
https: // acme-v02.api.ļauj šifrēt.org / direktorijs
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gree / (C) ancel:
…
Jūsu konfigurācijas failos netika atrasts neviens nosaukums. Lūdzu, ievadiet savā domēnā
nosaukums (-i) (atdalīts ar komatu un / vai atstarpi) (Lai atceltu, ievadiet “c”): SUBDOMAIN.DOMĒNA VĀRDS.TLD
…
Lūdzu, izvēlieties, vai novirzīt HTTP trafiku uz HTTPS, noņemot HTTP piekļuvi.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Nav novirzīšanas - neveiciet papildu izmaiņas tīmekļa servera konfigurācijā.
2: Novirzīšana - veiciet visu pieprasījumu novirzīšanu, lai nodrošinātu piekļuvi HTTPS. Izvēlieties šo
jaunas vietnes vai ja esat pārliecināts, ka jūsu vietne darbojas HTTPS. To var atsaukt
mainīt, rediģējot tīmekļa servera konfigurāciju.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Izvēlieties atbilstošo numuru [1-2], pēc tam [ievadiet] (nospiediet taustiņu 'c', lai atceltu): 2
Pārvirzot visu trafiku 80. ostā uz SSL mapē / etc / nginx / sites-enabled / default
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Apsveicu! Jūs esat veiksmīgi iespējojis vietni https: // SUBDOMAIN.DOMĒNA VĀRDS.TLD
Pārbaudiet konfigurāciju vietnē:
https: // www.ssllabs.com / ssltest / analizēt.html?d = apakšdomēna.DOMĒNA VĀRDS.TLD
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SVARĪGAS PIEZĪMES:
- Apsveicu! Jūsu sertifikāts un ķēde ir saglabāti:
Jūsu atslēgas fails tika saglabāts vietnē:
/ etc / letsencrypt / live / SUBDOMAIN.DOMĒNA VĀRDS.TLD / privkey.pemKā parādīts iepriekšējā piemērā, sertifikāta iegūšanai ir jānorāda tikai derīga e-pasta adrese un domēna nosaukums. Šis sertifikāts ir piešķirts / etc / letsencrypt / live / SUBDOMAIN.DOMĒNA VĀRDS.TLD
. Pēdējais direktorijs tiks nosaukts pēc jūsu FQDN.
Vissvarīgākais aspekts ir opcijas Novirzīšana izvēle, un tā veiks visu HTTP trafiku novirzīšanu uz HTTPS. Ja vēlaties zināt, kādas ir šīs izmaiņas, varat pārbaudīt konfigurācijas failus / etc / nginx /
lai uzzinātu tā būtību.
2. Rediģēt Config failus
Ja vēlaties manuāli konfigurēt serveri sertifikātu lietošanai. Lai iegūtu sertifikātus, izmantojot certbot, palaidiet:
$ sudo certbot certonlyTāpat kā iepriekš, sertifikāti tiek saglabāti direktorijā / etc / letsencrypt / live / yourdomainname.com /
Tagad mēs varam konfigurēt Nginx izmantot failus šajā direktorijā. Pirmkārt, vispirms atbrīvošos no konkrētā Debian direktorija izkārtojuma. Noklusējuma lapas vietnes konfigurācijas fails ir / etc / nginx / sites-available / default
apakšdirektorijs ar simbolu saiti uz / etc / nginx / iespējota vietne
.
Es vienkārši izdzēsīšu symlink un pārvietošu konfigurācijas failu uz / etc / nginx / conf.d ar a .conf paplašinājums, lai lietas būtu vispārīgākas un piemērojamas arī citiem distros.
$ sudo rm / etc / sites-enabled / default$ sudo mv / etc / nginx / sites-available / default / etc / nginx / conf.d / noklusējums.konf
$ sudo pakalpojums nginx restartējas
Es modificēšu šo noklusējuma konfigurācijas failu, lai parādītu, kā tiek iespējota TLS.
Šis ir noklusējuma konfigurācijas faila saturs bez komentētajām sadaļām. Izceltās sadaļas ir jāpievieno servera konfigurācijai, lai iespējotu TLS, un pēdējais šī konfigurācijas faila bloks nosaka, vai shēma izmanto TLS vai nē. Ja TLS netiek izmantots, tas vienkārši atdod klientam 301 novirzīšanas kodu un maina URL, lai tā vietā izmantotu https. Tādā veidā jūs nepalaidīsit garām lietotājus
serverisnoklausīties 80 default_server;
klausīties [::]: 80 default_server;
klausīties 443 ssl;
ssl_certificate / etc / letsencrypt / live / SUBDOMAIN.DOMAIN.TLS / pilna ķēde.pem;
ssl_certificate_key / etc / letsencrypt / live / SUBDOMAIN.DOMAIN.TLD / privkey.pem;
ssl_session_cache shared: le_nginx_SSL: 1m;
ssl_session_timeout 1440m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers ieslēgts;
ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305: ECDHE-
ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES256
-GCM-SHA384: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256
-GCM-SHA384: ECDHE-ECDSA-AES128-SHA256: ECDHE-RSA-AES128-SHA256: ECDHE-ECDSA-AES128
-SHA: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES128-SHA: ECDHE-ECDSA-AES256-SHA384: ECDHE
-ECDSA-AES256-SHA: ECDHE-RSA-AES256-SHA: DHE-RSA-AES128-SHA256: DHE-RSA-AES128-SHA: DHE
-RSA-AES256-SHA256: DHE-RSA-AES256-SHA: ECDHE-ECDSA-DES-CBC3-SHA: ECDHE-RSA-DES-CBC3
-SHA: EDH-RSA-DES-CBC3-SHA: AES128-GCM-SHA256: AES256-GCM-SHA384: AES128-SHA256: AES256
-SHA256: AES128-SHA: AES256-SHA: DES-CBC3-SHA:!DSS ";
root / var / www / html;
indeksa indekss.HTML indekss.htm indekss.nginx-debian.html;
servera_nosaukums _;
atrašanās vieta /
try_files $ uri $ uri / = 404;
ja ($ shēma != "https")
atgriešanās 301 https: // $ resursdators $ request_uri;
Šim konfigurācijas failam ir pievienoti daži papildu parametri. Ieskaitot parametrus, kas deklarē taimautu, TLS versiju, kas jums jāizmanto, un kādus šifrēšanas šifrus serveris izmantos. Tas tika aizņemts no Certbot ieteiktajām (bet pēc izvēles) Nginx konfigurācijām.
Tagad pārbaudiet, vai konfigurācijas fails ir derīgs, un restartējiet serveri.
$ sudo nginx -tnginx: konfigurācijas fails / etc / nginx / nginx.konf sintakse ir ok
nginx: konfigurācijas fails / etc / nginx / nginx.konf tests ir veiksmīgs
$ sudo pakalpojums nginx restartējas
Secinājums
Šo pašu pieeju varat izmantot sarežģītākām tīmekļa lietotnēm un pakalpojumiem, kuriem nepieciešams HTTPS. Ļaujiet šifrēt, izsniedzot sertifikātus vairākiem domēna vārdiem vienlaikus, un jūs varat diezgan viegli mitināt vairākas vietnes aiz sava nginx tīmekļa servera. Ja sekojāt iepriekš minētajam piemēram, mēģiniet sazināties ar savu vietni, izmantojot http (http: // SUBDOMAIN.DOMAIN.TLD), un jūs tiksiet automātiski novirzīts uz HTTPS.
Citiem tīmekļa serveriem, piemēram, Apache, izmantojiet atbilstošo certbot spraudni vai skatiet to oficiālo dokumentāciju.