Kuidas saada HTTPS kohalikus arenduskeskkonnas 5 minutiga tööle

Peaaegu kõik veebisaidid, mida täna külastate, on HTTPS-i kaitstud. Kui teie oma veel pole, peaks see olema. Oma serveri turvalisus HTTPS-i abil tähendab ka seda, et te ei saa sellele serverile päringuid saata serverilt, mida HTTPS ei kaitse. See tekitab probleemi arendajatele, kes kasutavad kohalikku arenduskeskkonda, sest kõik nad töötavad //localhostjuba valmis.

Käivitamisel, milles ma olen osa, otsustasime turvalisuse suurendamiseks oma HTWPS-ga oma AWS Elastic Load Balanceri lõpp-punktid turvata. Ma sattusin olukorda, kus minu kohaliku arenduskeskkonna taotlused serverile hakkasid tagasi lükkama.

Kiire Google'i otsing hiljem leidsin mitu sellist artiklit, see või see koos üksikasjalike juhistega, kuidas saaksin HTTPS-i rakendada localhost. Ükski neist juhistest ei tundunud töötavat ka pärast seda, kui ma neid usuliselt järgisin. Chrome viskas NET::ERR_CERT_COMMON_NAME_INVALIDmulle alati vea.

Probleem

Kõik üksikasjalikud juhised, mille leidsin, olid kirjutamise ajal õiged. Enam mitte.

Pärast tonni guugeldamist avastasin, et minu kohaliku sertifikaadi tagasilükkamise põhjus oli see, et Chrome oli sertifikaatides enam kaotanud toe commonName'i sobitamiseks, nõudes subjektiltAltName alates 2017. aasta jaanuarist.

Lahendus

Kõigi oma sertifikaatide loomiseks kasutame OpenSSL-i.

1. samm: juur-SSL-sertifikaat

Esimene samm on luua SSL (Root Secure Sockets Layer) sertifikaat. Seda juursertifikaati saab seejärel kasutada suvalise arvu sertifikaatide allkirjastamiseks, mille võite luua üksikute domeenide jaoks. Kui te pole SSL-i ökosüsteemiga tuttav, teeb see DNSimplei artikkel head tööd juur-SSL-sertifikaatide tutvustamiseks.

Looge RSA-2048 võti ja salvestage see faili rootCA.key. Seda faili kasutatakse võtmena SSL-juure sertifikaadi loomiseks. Teil palutakse sisestada pääsulause, mille peate sisestama iga kord, kui kasutate sertifikaadi loomiseks just seda võtit.

openssl genrsa -des3 -out rootCA.key 2048

Loodud võtit saate kasutada uue juur-SSL-sertifikaadi loomiseks. Salvestage see faili nimega rootCA.pem. Selle sertifikaadi kehtivusaeg on 1024 päeva. Muutke see julgelt soovitud päevade arvuks. Teilt küsitakse ka muud valikulist teavet.

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

2. samm: usaldage juur-SSL-sertifikaati

Enne kui saate värskelt loodud juur-SSL-i sertifikaati kasutada domeenisertifikaatide väljaandmise alustamiseks, on veel üks samm. Peate käskima oma Macil usaldada teie juursertifikaati, nii et kõik tema välja antud üksikud sertifikaadid oleksid usaldusväärsed.

Avage oma Macis võtmehoidja juurdepääs ja minge oma süsteemi võtmehoidja kategooriasse Sertifikaadid. Kui olete sinna jõudnud, importige rootCA.pemmenüükäsk Fail> Impordi üksused. Topeltklõpsake imporditud sertifikaati ja muutke jaotises Usaldus rippmenüü „Kui kasutate seda sertifikaati:” väärtuseks Alati tr ust.

Kui olete siiani juhiseid õigesti järginud, peaks teie sertifikaat olema võtmehoidja juurdepääsul umbes selline

2. samm: domeeni SSL-sertifikaat

SSL-juure sertifikaati saab nüüd kasutada sertifikaadi väljaandmiseks spetsiaalselt teie kohalikule arenduskeskkonnale, mis asub aadressil localhost.

Looge uus OpenSSL-i konfiguratsioonifail, server.csr.cnfet saaksite sertifikaadi loomisel need sätted importida käsureale sisestamise asemel.

[req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn [dn] C=US ST=RandomState L=RandomCity O=RandomOrganization OU=RandomOrganizationUnit [email protected] CN = localhost

v3.extX509 v3 sertifikaadi loomiseks looge fail. Pange tähele, kuidas me subjectAltNamesiin täpsustame .

authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = localhost

Looge sertifikaatvõti localhostkataloogi salvestatud konfiguratsioonisätete kasutamiseks server.csr.cnf. See võti on salvestatud server.key.

openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <( cat server.csr.cnf )

Sertifikaadi allkirjastamistaotlus väljastatakse SSL-i juursertifikaadi kaudu, mille lõime varem domeenisertifikaadi loomiseks localhost. Väljundiks on sertifikaadifail nimega server.crt.

openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext

Kasutage oma uut SSL-sertifikaati

Olete nüüd valmis oma localhostHTTPS-i abil turvama. Liiguta server.keyja server.crtfaile juurdepääsetavas kohas oma server ja neid kaasata, kui alustada oma server.

Node.js-s kirjutatud Expressi rakenduses saate seda teha järgmiselt. Veenduge, et teete seda ainult oma kohaliku keskkonna jaoks. Ärge kasutage seda tootmisel .

Loodetavasti leidsite sellest õpetusest kasu. Kui teile siin antud käskude käitamine ei meeldi, olen loonud käepäraste skriptide komplekti, mida saate sertifikaatide loomiseks kiiresti käivitada. Lisateavet leiate GitHubi repost.

Mulle meeldib teisi veebiarendajaid aidata. Jälgige mind Twitteris ja andke mulle teada, kui teil on ettepanekuid või tagasisidet. Kui soovite avaldada tunnustust minu tehtud tööle, olgu see siis blogipostitus, avatud lähtekoodiga projekt või lihtsalt naljakas säuts, võite mulle osta tassi kohvi.