Ären VPN äntwert op Verbindungen um 3 Auer moies, während d'Maschinn, déi seng Zertifikater ënnerschreift, ausgeschalt an enger Tirang läit. E Client, deen de Serverzertifikat validéiert, kontaktéiert ni Är CA, also muss d'CA fir keng Verbindung erreechbar sinn. Den Deel, deen eng Planung brauch, ass den Dag, op deem en Zertifikat ausgegraff, erneiert oder zréckgezu muss ginn während de Root-Schlëssel agespaart bleift.

Wat eng Verbindung tatsächlech validéiert

Wann den OpenVPN-Client sech verbënnt, geet en d'Signaturkette vum Bliederzertifikat vum Server erop bis zu engem CA-Zertifikat, deem en schonn traut, kontrolléiert d'Gëltegkeetsfenster an, wann de Profil et seet, konsultéiert eng Widderrufflëscht. En sicht ni Äre Root-CA. De Server mécht d'Spillbild fir Clientzertifikater. Beim Verbannen sinn nëmmen d'Blied, déi Zwëschenanlag an de Vertrauensbündel, deen Dir virdru verdeelt hutt, präsent.

Wat tatsächlech feelt, ass eng vun dräi Saachen: Den Ënnerschrëftsschlëssel ass bei der Ausgab net verfügbar, eng Widderrufflëscht ass veraltert, oder de Vertrauensbündel vum Client ass méi al wéi d'Kette, déi de Server presentéiert. Déi éischt ass e Prozessproblem; déi aner zwou si Verdeelungsproblemer. Keng vun hinnen erfuerdert, datt de Root-Schlëssel online ass, an e verwalteten VPN-Service, deen e private Zertifikat fir d'Tunnelauthentifikatioun verlaangt, verréckelt just d'Ënnerschrëftsauthoitéit op de Provider. Azure Punkt-zu-Säit funktionéiert ëmgedréit: Dir lued e Rootzertifikat erop an Zertifikater, déi drënner ënnerschriwwe sinn, ginn als vertrauenswürdeg ugesinn, also frot, wien ënnerschreift, wien validéiert a wéi en Zertifikat fréi zréckgezunn gëtt.

Baut de Root op engem Host, deen ni eng Adress kritt

E offline Root gëtt selten benotzt: fir den Zwësche-CA-Zertifikat z'ënnerschreiwen an duerno fir en z'erneieren oder zréckzezéien. Alles anescht geschitt eng Niveau driwwer. Maacht d'Root-Aarbecht op enger Maschinn, déi aus dem Netzwierk gehale gëtt, wa méiglech vun engem live System, a notéiert, wien am Raum war. D'Kommandosetzen ginn OpenSSL 1.1.1 oder méi nei aus, well -addext an ale Builds net verfügbar ass.

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"

Erstellt d'Zwëschenanlag op dem Ënnerschrëftshost a bréngt just hir Ufro op déi offline Maschinn. De Root ënnerschreift dës Ufro mat enger Padlängt vun null, sou datt d'Zwëschen-CA Endzertifikater ënnerschreiwe kann, awer keng aner CA ënner sech schafe kann. Dee eenzeg Extensioun verhënnert, datt een kompromittéierten Ënnerschrëftshost eng Root-gläichwäerteg Authoitéit schaaft. Benotzt ECDSA nëmmen, wann all Client OpenVPN 2.4 oder méi nei leeft; soss generéiert RSA-Schlësselen a hält de Flux gläich.

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 enthält basicConstraints=critical,CA:TRUE,pathlen:0, keyUsage=critical,keyCertSign,cRLSign an authorityKeyIdentifier=keyid:always. Gitt de Root-Schlëssel zréck an säi Safe, ier den Ënnerschrëftshost erëm verbonne gëtt. Wann de Root d'Zwëschenanlag zréckzéie muss kënnen, ënnerschreift se mat openssl ca -config root.cnf -extensions intermediate_ca géint eng Root-niveau index.txt amplaz vun openssl x509 -req, sou datt d'Seriennummer festgehale gëtt; schéckt duerno d'Resultat-Rootlëscht am Clientprofil, wou eng dateibaséiert crl-verify se beim Start liest. Schéckt de Cliente e Bündel mat béide CA-Zertifikater; eng Blied eleng validéiert net géint de Root.

Gitt Blieder aus der Zwëschenanlag aus, mat enger Datebank

D'Ënnerschreiwen mat openssl x509 -req funktionéiert, bis Dir zréckzéie musst, well näischt d'Seriennummer festhält. Benotzt openssl ca vum éischten Zertifikat un, sou datt Seriennummer, Ofleefer an Zréckzuchsstatus an enger Datebank liewen. Erstellt d'Datebankdateien eng Kéier a richt dann d'Konfiguratioun dorop aus:

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

D'Schlësselbenotzungszeil setzt en ECDSA-Schlëssel viraus; füügt keyEncipherment fir RSA bäi. Gitt all Client säin eegene gemeinsamen Numm, well OpenVPN eng Verbindung iwwer dat Feld identifizéiert, an zwou Laptopen, déi CN=vpn-client deelen, kënnen a Loggen, an den client-config-dir-Regelen oder an engem Push pro Benotzer net ënnerscheet ginn, an Dir verléiert d'Zouuerdnung, déi eng Zréckzuchsentscheedung verdeedegbar mécht. Gitt eng Blied sou aus a validéiert se:

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

Halt den Ënnerschrëftsschlëssel hannert enger Politikgrenz, amplaz en op den VPN-Host ze kopéieren: e klengen Service, deen d'Ufro authentifizéiert, de gemeinsamen Numm géint eng Erlaabnislëscht kontrolléiert an nëmmen den Zertifikat zréckgëtt. Logt all Seriennummer; de Log ass déi eenzeg Verbindung tëscht engem Zertifikat an der Persoun, déi en ugefrot huet.

Publizéiert de Zréckzuch, ouni de Root ze erwächen

Clientzertifikater ginn duerch d'Zwëschenanlag zréckgezunn, ni duerch de Root. D'Rootlëscht ass nëmme wichteg, wann eng Zwëschenanlag verbrannt ass. Richt de Server mat crl-verify op d'Zwëschenlëscht. Eng dateibaséiert CRL gëtt beim Service-start gelueden, also lued se no all Regenaratioun nei; d'Verzeechnesform liest de Status beim Verbannen a kascht eng Datei pro Seriennummer.

Zréckzéien a regeneréieren mat zwou Kommandos aus der selwechter Datebank:

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

Da kuckt op d'Auer. Eng CRL dréit en Feld fir déi nächst Aktualiséierung, a wann dee Datum vergaangen ass, refuséiert en validéierende Partner d'Lëscht amplaz se z'ignoréieren. Eng monatlech Regenaratioun mat default_crl_days = 30 léisst Spillraum; eng jäerlech net. Méi kuerz Liewensdauere vun de Blieder sinn déi zouverlässeg Kontroll, well de Zréckzuch nëmmen do gëllt, wou d'Lëscht konsultéiert gëtt.

Test d'Kette, da schreift d'Zeremonie op

Reproduzéiert véier Feeler, ier Dir dem Design traut. Validéiert d'Kette mat openssl verify -CAfile ca-bundle.crt -untrusted intermediate.crt server.crt. Verbënnt Iech mat engem ofgelafene Clientzertifikat a bestätegt, datt de Server et refuséiert. Zréckzéit en Testclient, lued nei a bestätegt, datt d'Lëscht wierkt. Verréckelt d'Auer vun engem Host en Dag no vir, well eng falsch Auer Zertifikater ausstelle kann, déi anzwousch anescht gëlteg ausgesinn, an se refuséieren.

En offline Root ass nëmmen eng Kontroll, wann d'Pabeieren existéieren: zwee genannt Persounen fir d'Zeremonie, en Opzeechnung vun all ënnerschriwwener Seriennummer, eng verschlësselt Backup, déi getrennt vun der Maschinn gelagert gëtt, an en Test vun der Restauratioun op engem isoléierten Host. Ënnerschreift an der selwechter Zeremonie eng Ersatz-Zwëschenanlag, sou datt en doudegen Ënnerschrëftshost Iech net géint Mëtternuecht de Root opmaache léisst.

Ier Dir et fäerdeg nennt, bestätegt fënnef Saachen: de Root-Schlëssel ass net op engem vernetzte Host, den Zwësche-Schlëssel lieft nëmmen op dem Ënnerschrëftshost, de Clientbündel dréit béid CA-Zertifikater, d'CRL huet eng zukünfteg nächst Aktualiséierung, an een huet en Kalennerandrag fir all Ofleefer an der Kette. Wa ceng feelt, ass d'Astellung, déi offline ausgesäit, just net dokumentéiert.

Ähnlech Artikelen