Fréier oder méi spéit bitt e VPN-Benotzer un, e private Schlëssel per E-Mail ze schécken, fir datt den Administrateur en Zertifikat ka maachen, an genau dës Offer ass et, déi een oflehne muss. Den Ablaf, dee funktionéiert, hält de Schlëssel vum éischte Kommando u beim Client: de Client generéiert en, schéckt eng Zertifikatsënnerschrëftsufro, den Aussteller prüft a genehmegt se, an den ënnerschriwwenen Zertifikat kënnt zréck, fir nieft dem Schlëssel ze stoen, deen en erstallt huet. D'Checklëscht hei drënner fällt op all Schrëtt zou, an dat ass de Punkt, well zwee vun de fënnef Schrëtt sinn déi, déi d'Leit iwwersprangen, wa se et ellen hunn.

Schrëtt 1: generéiert de Schlëssel do, wou en wäert liewen

Generéiert en op der Maschinn, déi de Schlëssel hält, a loosst en do. E Software-Schlëssel geet an eng Datei mat strikten Erlaabnisser; en hardwaregestäipte Schlëssel oder een an engem verwaltete Speicher gëtt ni eng Datei, an säi Registréierungswee ass meeschtens en eegent Geschier an net en OpenSSL-Kommando. Wéi och ëmmer, kee muss déi privat Halschent gesinn.

Den Software-Ablaf gesäit esou aus, de Schlëssel an d'Ufro entstinn an enger Sitzung:

umask 077
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out client.key
openssl req -new -key client.key -out client.csr -subj "/CN=alice-vpn/O=Example"

D'Linn umask ass méi wichteg wéi se ausgesäit. Ouni se gëtt de Schlëssel op engem standardméisseg permissive System fir jiddereen liesbar geschriwwen, an d'Datei méi spéit rëmzekopéieren verbreet dat. En existente Schlëssel weiderzegebrauchen ass legitim, wann en schonn geschützt ass an zu hirer Politik passt; pro Apparat en neien ze generéieren ass méi einfach ze begrënnen.

Schrëtt 2: setzt d'Identitéit an d'Ufro, net an d'E-Mail

Entscheet, wat d'VPN tatsächlech authentifizéiert, ier d'Ufro entsteet, well déi Äntwert gehéiert an d'CSR. OpenVPN bindet d'Client-Identitéit traditionell un den allgemengen Numm vum Zertifikat, an Instrumenter wéi strongSwan gläichen eng Identitéitskette mam Sujet oder engem alternativen Numm vum Sujet of. Eng E-Mail, déi seet, mäin Numm ass alice, ass kee Beweis, an eng Ufro, deenen hire Sujet datselwecht seet, ass just e bësse besser.

Füügt en alternativen Numm vum Sujet bäi, wann ären Iwwerpréifer ee kontrolléiert, well modern Ofgläichung d'aler CN dacks ignoréiert:

openssl req -new -key client.key -out client.csr \
  -subj "/CN=alice-vpn/O=Example" \
  -addext "subjectAltName=DNS:alice-vpn"

Hält d'CN kuerz, stabil an un de Kont gebonnen amplaz un e Laptopmodell. En Numm mat der Seriennummer vum Benotzergerät ass e Supportproblem, deen op déi éischt Hardwareersetzung waart.

Schrëtt 3: prüft d'Ufro, ier Dir se ënnerschreift

Den Aussteller prüft zwou verschidde Saachen, an se ze vermëschen ass de klassesche Feeler. Éischtens, datt d'Ufro intern konsequent ass: d'Ënnerschrëft gëtt géint de ëffentleche Schlëssel geprüft, deen se dréit. Zweetens, datt den Ufroer berechtegt ass op dat, wat d'Ufro freet, an dofir kann keng kryptografesch Prüfung äntweren.

Den mechaneschen Deel ass een eenzege Kommando, an en sollt en Iwwerpréifungsresultat zesumme mam Sujet drécken:

openssl req -in client.csr -noout -verify -subject
openssl req -in client.csr -noout -pubkey | openssl pkey -pubin -noout -text

Passt op, wat dat beweist. Eng Ufro, déi sech prüfe léisst, weist nëmmen, datt den Absender de passenden private Schlëssel zum Zäitpunkt vun der Agab hat; se beweist net, datt den Absender déi Persoun ass, déi am Sujet genannt gëtt, an se autoriséiert net de Grupp- oder Streckenzougang, deen ugefrot gëtt. D'Iwwerpréiwung vun der Aschreiwung ass en eegene Paart, an eng Ufro fir eng Grupp, déi kee genehmegt huet, sollt ofgelehnt ginn amplaz se stëll ze editéieren.

Schrëtt 4: autoriséiert, an ënnerschreift dann mat expliziten Erweiderungen

D'Ënnerschrëft ass de Punkt, wou d'CA Politik entscheet amplaz d'Ufro wiertlech ze akzeptéieren. Validitéit, Schlësselnotzung an d'Rollen-Erweiderung gehéieren an eng Erweiderungsdatei, net an Standardwäerter, un déi Dir sech a sechs Méint net méi erënnert. En Client-Zertifikat fir VPN-Authentifikatioun brauch d'Client-Authentifikatioun als Zweck.

cat > client.ext <<'EOF'
basicConstraints = CA:FALSE
keyUsage = digitalSignature
extendedKeyUsage = clientAuth
EOF
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key \
  -CAcreateserial -days 365 -extfile client.ext -out client.crt

Benotzt -CAserial mat der existéierender Seriennummeredatei, wann eng schonn am Gebrauch ass, a halt den CA-Schlëssel offline oder an deem geschützte Speicher, deen hir Politik nennt. D'Seriennummere vun de Zertifikate mussen pro Aussteller eenzegaarteg sinn; d'Seriennummeredatei vun Null un nei ze maachen riskéiert Kollisiounen, déi de Widderruff zweedeiteg maachen.

Halt fest, wat ausgestallt gouf: Seriennummer, Sujet, ugefrot Identitéit, genehmegend Persoun an Ofaflaf. Genau dës Opzeechnung ass et, op déi sech eng Widderruffsentscheedung méi spéit stäipt, an se kann net nëmmen aus dem Zertifikat rekonstruéiert ginn, wann d'Spuer vun der Aschreiwung nëmmen an engem Bréifkëschtchen lieft.

Schrëtt 5: installéiert en nieft dem passende Schlëssel a beweist d'Paar

De Client kritt den Zertifikat an d'Kette vum Aussteller, ni ee Schlëssel. Ier Dir verbënnt, bestätegt, datt den Zertifikat tatsächlech mat dem Schlëssel paart, deen schon op der Plack läit, well en net passend Paar vill méi spéit en duercherneen Handshake-Feeler produzéiert:

openssl x509 -in client.crt -noout -pubkey | openssl pkey -pubin -outform DER | openssl sha256
openssl pkey -in client.key -pubout -outform DER | openssl sha256

Déi zwee Digests mussen iwwereneestëmmen. Da verbënnt a bestätegt, datt d'Identitéit, déi de Server protokolléiert, déi ass, déi Dir autoriséiert hutt, an net just datt den Tunnel eropgaang ass. Wann de Schlëssel verluer geet oder den Apparat ersat gëtt, ass d'Äntwert Widderruff plus eng nei Ufro vum neien Apparat; den Administrateur ze froen, e Schlëssel vun anerwann zréckzeschécken, stellt den Original net erëm hier a brécht stëll d'Modell, dat d'Ufro sécher gemaach huet.

Ähnlech Artikelen