Kif tiġġenera ċavetta tal-klijent VPN u tissottometti CSR għall-firma
Żomm iċ-ċavetta privata fuq il-klijent u ibgħat biss it-talba. Ivverifika s-CSR, approva l-identità, iffirma b'estensjonijiet espliċiti u mbagħad ikkonferma l-par.
Illum jew għada, utent tal-VPN joffri li jibgħat ċavetta privata bl-email sabiex l-amministratur ikun jista' jagħmel ċertifikat, u dak l-offerta hija preċiżament dik li għandha tiġi rrifjutata. Il-fluss li jaħdem iżomm iċ-ċavetta fuq il-klijent mill-ewwel kmand: il-klijent jiġġeneraha, jibgħat talba għall-firma taċ-ċertifikat, il-ħarriġ jivverifikaha u jawtorizzaha, u ċ-ċertifikat iffirmat jerġa' lura biex joqgħod ħdejn iċ-ċavetta li ħolqot. Il-lista ta' kontroll hawn taħt tfalli magħluqa f'kull pass, u dan huwa l-punt, għax tnejn mill-ħames passi huma dawk li n-nies jaqbżu meta jkunu bl-għaġla.
Pass 1: iġġenera ċ-ċavetta fejn se tgħix
Iġġenera fuq il-magna li se żżomm iċ-ċavetta, u ħalliha hemm. Ċavetta tas-software tmur f'fajl b'permessi stretti; ċavetta appoġġjata mill-ħardwer jew f'maħżen immaniġġjat qatt ma ssir fajl, u t-triq tar-reġistrazzjoni tagħha normalment hija għodda separata u mhux kmand OpenSSL. Xorta waħda, ħadd m'għandu bżonn jara n-nofs privat.
Il-fluss tas-software jidher hekk, biċ-ċavetta u t-talba maħluqa f'sessjoni waħda:
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"Il-linja umask hija aktar importanti milli tidher. Mingħajrha ċ-ċavetta tinkiteb tinqara minn kulħadd fuq sistema permessiva b'mod awtomatiku, u l-kopja tal-fajl aktar tard tixxerred dan. L-użu mill-ġdid ta' ċavetta eżistenti huwa leġittimu meta tkun diġà protetta u taqbel mal-politika tiegħek; li tiġġenera waħda ġdida għal kull apparat hija aktar faċli biex tiġġustifika.
Pass 2: poġġi l-identità fit-talba, mhux fl-email
Iddeċiedi x'jiġġustifika realment il-VPN qabel ma tinħoloq it-talba, għax dik it-tweġiba tappartjeni ġewwa s-CSR. OpenVPN tradizzjonalment jgħaqqad l-identità tal-klijent man-nom komuni taċ-ċertifikat, u għodod bħal strongSwan iqabblu sensiela tal-identità mas-suġġett jew ma' isem alternattiv tas-suġġett. Email li jgħid li jisimni alice mhuwiex prova, u talba li s-suġġett tagħha jgħid l-istess ħaġa hija biss ftit aħjar.
Żid isem alternattiv tas-suġġett meta l-verifikatur tiegħek jiċċekkja wieħed, għax it-tqabbil modern spiss jinjora s-CN antik:
openssl req -new -key client.key -out client.csr \
-subj "/CN=alice-vpn/O=Example" \
-addext "subjectAltName=DNS:alice-vpn"Żomm is-CN qasir, stabbli u marbut mal-kont u mhux mal-mudell tal-laptop. Isem li fih in-numru tas-serje tal-apparat tal-utent hija problema ta' appoġġ li tistenna l-ewwel sostituzzjoni tal-ħardwer.
Pass 3: ivverifika t-talba qabel ma tiffirmaha
Il-ħarriġ jivverifika żewġ affarijiet differenti, u li tħallathom hija l-iżball klassiku. L-ewwel, li t-talba hija internament konsistenti: il-firma tiġi vverifikata kontra ċ-ċavetta pubblika li ġġorr. It-tieni, li min jitlob għandu dritt għal dak li titlob it-talba, u dan l-ebda verifika kriptografika ma tista' twieġeb.
Il-parti mekkanika hija kmand wieħed, u għandha tipprintja riżultat tal-verifika flimkien mas-suġġett:
openssl req -in client.csr -noout -verify -subject
openssl req -in client.csr -noout -pubkey | openssl pkey -pubin -noout -textInnota x'jipprova dan. Talba li tiġi vverifikata turi biss li l-mittent kellu ċ-ċavetta privata li taqbel fil-ħin tas-sottomissjoni; ma tipprovax li l-mittent huwa l-persuna msemmija fis-suġġett, u ma tawtorizzax l-aċċess għall-grupp jew għar-rotta mitluba. Ir-reviżjoni tar-reġistrazzjoni hija bieb separat, u talba għal grupp li ħadd ma approva għandha tiġi rrifjutata u mhux editjata bil-kwiet.
Pass 4: awtorizza, imbagħad iffirma b'estensjonijiet espliċiti
Il-firma hija fejn is-CA tiddeċiedi l-politika minflok ma taċċetta t-talba kelma b'kelma. Il-validità, l-użu taċ-ċavetta u l-estensjoni tar-rwol jappartjenu f'fajl tal-estensjonijiet, u mhux fil-valuri awtomatiċi li mhux se tiftakar sitt xhur wara. Ċertifikat tal-klijent għall-awtentikazzjoni tal-VPN jeħtieġ l-awtentikazzjoni tal-klijent bħala l-iskop tiegħu.
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.crtUża -CAserial mal-fajl tas-serje eżistenti jekk wieħed diġà jintuża, u żomm iċ-ċavetta tas-CA offline jew fil-maħżen protett li jismi l-politika tiegħek. In-numri tas-serje taċ-ċertifikati għandhom ikunu uniċi għal kull ħarriġ; li terġa' toħloq il-fajl tas-serje mill-bidu tirriskja kolliżjonijiet li jagħmlu r-revoka ambigwa.
Irreġistra x'inkiteb: numru tas-serje, suġġett, identità mitluba, persuna li approvat u skadenza. Dak ir-reġistru huwa dak li fuqu tiddependi deċiżjoni ta' revoka aktar tard, u ma jistax jerġa' jinbena miċ-ċertifikat biss jekk it-traċċa tar-reġistrazzjoni tgħix biss f'kaxxa tal-posta.
Pass 5: installah ħdejn iċ-ċavetta li taqbel u ipprova l-par
Il-klijent jirċievi iċ-ċertifikat u l-katina tal-ħarriġ, qatt ċavetta. Qabel ma tikkonnettja, ikkonferma li ċ-ċertifikat tassew jifforma par maċ-ċavetta li diġà tinsab fuq id-diska, għax par li ma jaqbilx jipproduċi falliment tal-handshake konfuż ħafna aktar tard:
openssl x509 -in client.crt -noout -pubkey | openssl pkey -pubin -outform DER | openssl sha256
openssl pkey -in client.key -pubout -outform DER | openssl sha256Iż-żewġ digests iridu jaqblu. Imbagħad ikkonnettja u kkonferma li l-identità li tirreġistra s-server hija dik li awtorizzajt, u mhux biss li t-tunnel tela'. Jekk iċ-ċavetta tintilef jew l-apparat jiġi sostitwit, it-tweġiba hija revoka flimkien ma' talba ġdida mill-apparat il-ġdid; li titlob lill-amministratur jibgħat lura ċavetta minn x'imkien ieħor ma tirkuprax l-oriġinal u bil-kwiet tkisser il-mudell li għamel it-talba sigura.