Haltu VPN-rótar-CA þínu ótengdu og gefðu samt út skírteini
Haltu rótarlyklinum utan netkerfisins, skrifaðu undir laufskírteini með milliliggjandi CA, birtu CRL á réttum tíma og prófaðu keðjuna áður en fyrsti biðlarinn tengist.
VPN-ið þitt svarar tengingum klukkan 3 að nóttu meðan vélin sem skrifar undir skírteinin þess stendur slökkt í skúffu. Biðlari sem staðfestir skírteini netþjónsins hefur aldrei samband við CA-ið þitt, svo CA-ið þarf ekki að vera aðgengilegt fyrir neina tengingu. Hlutinn sem þarf skipulagningu er dagurinn þegar skírteini þarf að gefa út, endurnýja eða afturkalla meðan rótarlykillinn er læstur inni.
Hvað tenging staðfestir í raun
Þegar OpenVPN-biðlarinn tengist fer hann eftir undirskriftarkeðjunni frá laufskírteini netþjónsins upp að CA-skírteini sem hann treystir þegar, athugar gildistímabilið og flettir upp afturköllunarlista ef sniðið segir svo. Hann leitar aldrei að rótar-CA-inu þínu. Netþjónninn gerir spegilmynd fyrir biðlaraskírteini. Á tengitímanum eru aðeins laufið, milliliggjandi skírteinið og traustbunkan sem þú dreifðir fyrr til staðar.
Það sem í raun bregst er eitt af þrennu: undirskriftarlykillinn er ekki tiltækur við útgáfu, afturköllunarlisti er orðinn úreltur eða traustbunka biðlarans er eldri en keðjan sem netþjónninn leggur fram. Hið fyrra er vandamál í ferlinu; hin tvö eru dreifingarvandamál. Ekkert þeirra krefst þess að rótarlykillinn sé á netinu, og stýrð VPN-þjónusta sem krefst einkaskírteinis fyrir auðkenningu göngunnar færir undirskriftarvaldið til þjónustuveitandans. Azure punkt-í-stað virkar öfugt: þú hleður upp rótarskírteini og skírteini sem skrifuð eru undir því eru treyst, svo spurðu hver skrifar undir, hver staðfestir og hvernig skírteini er dregið til baka snemma.
Byggðu rótina á hýsli sem fær aldrei vistfang
Rót sem er ekki á netinu er sjaldan notuð: til að skrifa undir skírteini milliliggjandi CA og síðar til að endurnýja eða afturkalla það. Allt annað gerist einu stigi neðar. Gerðu rótarstarfið á vél sem haldið er utan nets, ef mögulegt er frá lifandi kerfi, og skráðu hverjir voru í herberginu. Skipanalínurnar gera ráð fyrir OpenSSL 1.1.1 eða nýrri, því -addext er ekki í eldri byggingum.
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"
Búðu til milliliggjandi skírteinið á undirskriftarhýslinu og farðu aðeins með beiðni þess á vélina sem er ekki á netinu. Rótin skrifar undir beiðnina með núll slóðarlengd, svo milliliggjandi CA má skrifa undir endaskírteini en má ekki búa til annað CA undir sér. Þessi eina viðbót kemur í veg fyrir að ígengt undirskriftarhýsil búi til vald jafngilt rótinni. Notaðu ECDSA aðeins ef hver biðlari keyrir OpenVPN 2.4 eða nýrra; annars búðu til RSA-lykla og haltu ferlinu óbreyttu.
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 inniheldur basicConstraints=critical,CA:TRUE,pathlen:0, keyUsage=critical,keyCertSign,cRLSign og authorityKeyIdentifier=keyid:always. Settu rótarlykilinn aftur í peningaskápinn áður en undirskriftarhýsillinn er tengdur aftur. Ef rótin þarf að geta afturkallað milliliggjandi skírteinið skaltu skrifa undir það með openssl ca -config root.cnf -extensions intermediate_ca gegn index.txt á rótarstigi í stað openssl x509 -req, svo raðnúmerið skráist; sendu síðan rótarlistann sem myndast inni í sniði biðlarans, þar sem skráartengt crl-verify les hann við ræsingu. Sendu biðlurum bunku með báðum CA-skírteinum; lauf eitt sér staðfestist ekki gegn rótinni.
Gefðu út lauf frá milliliggjandi CA, með gagnagrunn
Undirskrift með openssl x509 -req virkar þar til þú þarft að afturkalla, því ekkert skráir raðnúmerið. Notaðu openssl ca frá fyrsta skírteininu svo raðnúmer, gildislok og afturköllunarstaða lifi í einum gagnagrunni. Búðu til gagnagrunnsskrárnar einu sinni og beindu síðan stillingunum að þeim:
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
Lýsingarlykillinn gerir ráð fyrir ECDSA-lykli; bættu keyEncipherment við fyrir RSA. Gefðu hverjum biðlara eigið algilt nafn, því OpenVPN auðkennir tengingu eftir því sviði, og tveir fartölvur sem deila CN=vpn-client er ekki hægt að greina í skrám, í reglum client-config-dir eða í neinni ýtingu fyrir hvern notanda, og þú tapar þeirri eignun sem gerir afturköllunarákvörðun verjanlega. Gefðu út og staðfestu lauf svona:
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
Haltu undirskriftarlyklinum bak við stefnumörk í stað þess að afrita hann á VPN-hýsilinn: lítil þjónusta sem auðkennir beiðnina, athugar algilda nafnið gegn leyfislista og skilar aðeins skírteininu. Skráðu hvert raðnúmer; skráin er eina tengingin milli skírteinis og manneskjunnar sem bað um það.
Birtu afturköllun án þess að vekja rótina
Biðlaraskírteini eru afturkölluð af milliliggjandi CA, aldrei af rótinni. Rótarlistinn skiptir máli aðeins þegar milliliggjandi CA er brennt. Beindu netþjónnum að milliliggjandi listanum með crl-verify. Skráartengt CRL er hlaðið við ræsingu þjónustunnar, svo hladdu því aftur eftir hverja endursköpun; möppuformið les stöðu á tengitíma og kostar eina skrá fyrir hvert raðnúmer.
Afturkallaðu og endurskapaðu með tveimur skipunum úr sama gagnagrunni:
openssl ca -config intermediate.cnf -revoke /etc/vpn-ca/intermediate/newcerts/1001.pem
openssl ca -config intermediate.cnf -gencrl -out /etc/openvpn/crl.pem
Fylgstu síðan með klukkunni. CRL ber svið fyrir næstu uppfærslu, og þegar sá dagur er liðinn hafnar staðfestandi jafningi listanum í stað þess að hunsa hann. Mánaðarleg endursköpun með default_crl_days = 30 skilur eftir svigrúm; árleg ekki. Styttri líftími laufa er áreiðanlegri stjórnun, því afturköllun gildir aðeins þar sem listinn er skoðaður.
Prófaðu keðjuna og skrifaðu síðan athöfnina niður
Endurgerðu fjögur mistök áður en þú treystir hönnuninni. Staðfestu keðjuna með openssl verify -CAfile ca-bundle.crt -untrusted intermediate.crt server.crt. Tengstu með útrunnu biðlaraskírteini og staðfestu að netþjónninn hafni því. Afturkallaðu prófbiðlara, hladdu aftur og staðfestu að listinn taki gildi. Færðu klukku hýsisins einn dag fram, því röng klukka getur gefið út og hafnað skírteinum sem virðast gild annars staðar.
Rót sem er ekki á netinu er aðeins stjórntæki ef pappírsvinnan er til: tveir nafngreindir einstaklingar fyrir athöfnina, skrá um hvert undirritað raðnúmer, dulkóðuð öryggisafrit geymd aðskilin frá vélinni og endurheimtarpróf á einangruðu hýsli. Skrifaðu undir varamilliliggjandi skírteini í sömu athöfn svo dautt undirskriftarhýsil neyði þig ekki til að opna rótina á miðnætti.
Áður en þú kallar þetta búið skaltu staðfesta fimm hluti: rótarlykillinn er ekki á netengdum hýsli, milliliggjandi lykillinn lifir aðeins á undirskriftarhýslinu, bunka biðlarans ber bæði CA-skírteini, CRL hefur framtíðar næstu uppfærslu og einhver á dagatalarfærslu fyrir hvert gildislok í keðjunni. Ef einn vantar er uppsetningin sem virðist ótengd bara óskjölvuð.