VPN yako hujibu miunganisho saa 3 usiku wakati mashine inayotia sahihi vyeti vyake imezimwa ndani ya droo. Mteja anayedhibiti cheti cha seva huwasiliana na CA yako kamwe, kwa hiyo CA haitaji kufikiwa kwa muunganisho wowote. Sehemu inayohitaji mipango ni siku ambayo cheti lazima kitolewe, kisasishe au kibatilishwe wakati ufunguo wa mzizi unabaki umefungwa.

Muunganisho huthibitisha nini kwa kweli

Mteja wa OpenVPN anapounganika, hupitia mnyororo wa sahihi kutoka cheti cha jani la seva juu hadi cheti cha CA anachokiamini tayari, hukagua kipindi cha uhalali na, ikiwa profaili inasema hivyo, huangalia orodha ya kufuta. Huitafuta CA yako ya mzizi kamwe. Seva hufanya mfano wa kioo kwa vyeti vya wateja. Wakati wa kuunganisha vipo tu jani, cha kati na kifurushi cha uaminifu ulichosambaza awali.

Kinachoshindikana kwa kweli ni kimoja kati ya matatu: ufunguo wa sahihi haupatikani wakati wa kutoa, orodha ya kufuta imepitwa na wakati, au kifurushi cha uaminifu cha mteja ni cha zamani kuliko mnyororo unaowasilishwa na seva. Kile cha kwanza ni tatizo la mchakato; vingine viwili ni matatizo ya usambazaji. Hakuna kinachohitaji ufunguo wa mzizi kuwa mtandaoni, na huduma ya VPN inayosimamiwa inayohitaji cheti cha faragha kwa uthibitishaji wa handaki huhamisha mamlaka ya sahihi kwa mtoa huduma tu. Azure kutoka-hatua-hadi-mahali hufanya kazi kinyume: unapakia cheti cha mzizi na vyeti vilivyotiwa sahihi chini yake huchukuliwa kuwa vya kuaminika, kwa hiyo uliza nani anatia sahihi, nani anadhibiti na jinsi cheti kinavutwa nyuma mapema.

Jenga mzizi kwenye mwenyeji asiyepata anwani kamwe

Mzizi wa nje ya mtandao hutumika mara chache: kutia sahihi cheti cha CA ya kati na baadaye kukisasisisha au kukibatilisha. Kila kitu kingine hufanyika ngazi moja chini. Fanya kazi ya mzizi kwenye mashine inayotunzwa nje ya mtandao, ikiwezekana kutoka mfumo hai, na andika nani alikuwa chumbani. Amri huchukulia OpenSSL 1.1.1 au mpya zaidi, kwa sababu -addext haipo katika ujenzi wa zamani.

openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out root.key
openssl req -x509 -new -key root.key -sha256 -days 7300 \
  -subj "/CN=Example VPN Root CA" -out root.crt \
  -addext "basicConstraints=critical,CA:TRUE" \
  -addext "keyUsage=critical,keyCertSign,cRLSign"

Unda cha kati kwenye mwenyeji wa sahihi na peleka ombi lake tu kwenye mashine ya nje ya mtandao. Mzizi hutia sahihi ombi hilo kwa urefu wa njia sifuri, kwa hiyo CA ya kati inaweza kutia sahihi vyeti vya mwisho lakini haiwezi kuunda CA nyingine chini yake. Ugani huo mmoja huzuia mwenyeji wa sahihi aliyeathiriwa kuunda mamlaka sawa na mzizi. Tumia ECDSA tu ikiwa kila mteja anaendesha OpenVPN 2.4 au mpya zaidi; vinginevyo tengeneza funguo za RSA na uweke mtiririko sawa.

openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out intermediate.key
openssl req -new -key intermediate.key -subj "/CN=Example VPN Intermediate CA" -out intermediate.csr
openssl x509 -req -in intermediate.csr -CA root.crt -CAkey root.key \
  -CAcreateserial -days 3650 -sha256 -extfile intermediate.ext -out intermediate.crt

intermediate.ext ina basicConstraints=critical,CA:TRUE,pathlen:0, keyUsage=critical,keyCertSign,cRLSign na authorityKeyIdentifier=keyid:always. Rudisha ufunguo wa mzizi kwenye sanduku lake kabla ya mwenyeji wa sahihi kuunganishwa tena. Ikiwa mzizi unapaswa kuweza kufuta cha kati, kia sahihi kwa openssl ca -config root.cnf -extensions intermediate_ca dhidi ya index.txt ya ngazi ya mzizi badala ya openssl x509 -req, ili namba ya mfululizo irekodiwe; kisha tuma orodha ya mzizi inayotokana ndani ya profaili ya mteja, ambapo crl-verify inayotegemea faili huisona wakati wa kuanza. Tuma kwa wateja kifurushi kilicho na vyeti vyote viwili vya CA; jani peke yake halitadhibitishwa dhidi ya mzizi.

Toa majani kutoka kwa cha kati, pamoja na hifadhidata

Kutia sahihi kwa openssl x509 -req hufanya kazi hadi utakapohitaji kufuta, kwa sababu hakuna kinachorekodi namba ya mfululizo. Tumia openssl ca kutoka cheti cha kwanza ili namba ya mfululizo, muda wa mwisho na hali ya kufuta viishi katika hifadhidata moja. Unda faili za hifadhidata mara moja, kisha uelekeze usanidi kwa hizo:

mkdir -p /etc/vpn-ca/intermediate/newcerts
touch /etc/vpn-ca/intermediate/index.txt
echo 1000 > /etc/vpn-ca/intermediate/serial
echo 1000 > /etc/vpn-ca/intermediate/crlnumber
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = /etc/vpn-ca/intermediate
database = $dir/index.txt
new_certs_dir = $dir/newcerts
serial = $dir/serial
crlnumber = $dir/crlnumber
certificate = $dir/intermediate.crt
private_key = $dir/intermediate.key
default_md = sha256
default_days = 365
default_crl_days = 30
unique_subject = no
policy = policy_any
[ policy_any ]
commonName = supplied
[ server_cert ]
basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature
extendedKeyUsage = serverAuth
subjectAltName = @server_names
[ client_cert ]
basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature
extendedKeyUsage = clientAuth
[ server_names ]
DNS.1 = vpn.example.com

Mstari wa matumizi ya ufunguo huchukulia ufunguo wa ECDSA; ongeza keyEncipherment kwa RSA. Mpe kila mteja jina lake la kawaida, kwa sababu OpenVPN hutambua muunganisho kwa uwanja huo, na kompyuta mbili zinazoshiriki CN=vpn-client haziwezi kutofautishwa katika kumbukumbu, katika kanuni za client-config-dir au katika push yoyote ya mtumiaji, na unapoteza uhusishaji unaofanya uamuzi wa kufuta uweze kuteteleka. Toa na udhibiti jani hivi:

openssl req -new -key alice.key -subj "/CN=alice-laptop" -out alice.csr
openssl ca -config intermediate.cnf -extensions client_cert -in alice.csr -out alice.crt -batch
openssl verify -CAfile ca-bundle.crt -untrusted intermediate.crt alice.crt

Weka ufunguo wa sahihi nyuma ya mpaka wa sera badala ya kuunakili kwenye mwenyeji wa VPN: huduma ndogo inayothibitisha ombi, kukagua jina la kawaida dhidi ya orodha iliyoruhusiwa na kurudisha cheti peke yake. Rekodi kila namba ya mfululizo; kumbukumbu ndiyo kiungo pekee kati ya cheti na mtu aliyeomba.

Chapisha kufuta bila kumwamsha mzizi

Vyeti vya wateja hufutwa na cha kati, kamwe na mzizi. Orodha ya mzizi ni muhimu tu wakati cha kati kimeteketezwa. Elekeza seva kwenye orodha ya kati kwa crl-verify. CRL inayotegemea faili hupakiwa wakati huduma inaanza, kwa hiyo ipakie tena baada ya kila kuzalisha upya; umbo la saraka husoma hali wakati wa kuunganisha na hutumia faili moja kwa kila namba ya mfululizo.

Futa na uunde upya kwa amri mbili kutoka hifadhidata hiyo hiyo:

openssl ca -config intermediate.cnf -revoke /etc/vpn-ca/intermediate/newcerts/1001.pem
openssl ca -config intermediate.cnf -gencrl -out /etc/openvpn/crl.pem

Kisha angalia saa. CRL hubeba uwanja wa sasisho lifuatalo, na tarehe hiyo ikiisha, mwenza anayedhibiti hukataa orodha badala ya kuipuuza. Kuzalisha upya kila mwezi kwa default_crl_days = 30 huacha nafasi; kila mwaka hakuna. Maisha mafupi ya majani ni udhibiti wa kuaminika zaidi, kwa sababu kufuta kunatumika tu pale orodha inaposhauriwa.

Jaribu mnyororo, kisha andika sherehe

Zalisha upya hitilafu nne kabla ya kuamini muundo. Dhibiti mnyororo kwa openssl verify -CAfile ca-bundle.crt -untrusted intermediate.crt server.crt. Unganisha na cheti cha mteja kilichopitwa na wakati na uthibitishe kuwa seva inakikataa. Futa mteja wa majaribio, pakia tena na uthibitishe kuwa orodha inaanza kutumika. Sogeza saa ya mwenyeji siku moja mbele, kwa sababu saa isiyo sahihi inaweza kutoa na kukataa vyeti vinavyoonekana halali mahali pengine.

Mzizi wa nje ya mtandao ni udhibiti tu ikiwa nyaraka zipo: watu wawili waliotajwa kwa sherehe, rekodi ya kila namba ya mfululizo iliyotiwa sahihi, nakala rudufu iliyofichwa iliyohifadhiwa kando ya mashine, na jaribio la kurejesha kwenye mwenyeji aliyetengwa. Tia sahihi cha kati cha akiba wakati wa sherehe hiyo hiyo ili mwenyeji wa sahihi aliyekufa usikulazimishe kufungua mzizi usiku wa manane.

Kabla ya kuiita imekamilika, uthibitishe mambo matano: ufunguo wa mzizi haupo kwenye mwenyeji wa mtandao, ufunguo wa kati unaishi tu kwenye mwenyeji wa sahihi, kifurushi cha mteja hubeba vyeti vyote viwili vya CA, CRL ina sasisho lifuatalo la baadaye, na mtu anamiliki ingizo la kalenda kwa kila mwisho wa muda katika mnyororo. Ikiwa kimoja hakipo, usanidi unaoonekana nje ya mtandao haujaandikwa tu.

Makala zinazohusiana