Эртеби-кечпи, VPN колдонуучусу администратор сертификат жасай алышы үчүн жеке ачкычты электрондук почта аркылуу жөнөтүүнү сунуштайт, жана так ушул сунуштан баш тартуу керек. Иштеген агым ачкычты биринчи буйруктан эле кардарда кармайт: кардар аны жаратат, сертификатка кол коюу сурамын жөнөтөт, чыгаруучу аны текшерип уруксат берет, ал эми кол коюлган сертификат кайтып келип, аны жараткан ачкычтын жанында турат. Төмөнкү текшерүү тизмеси ар бир кадамда жабык түрдө ишке ашпайт, жана бул маселенин маңызы, анткени беш кадамдын экөө адамдар шашканда өткөрүп жиберген кадамдар.

1-кадам: ачкычты ал жашай турган жерде жаратыңыз

Ачкычты кармай турган машинада жаратыңыз жана ошол жерде калтырыңыз. Программалык ачкыч катуу укуктарга ээ файлга жазылат; аппараттык колдоого ээ же башкарылуучу кампадагы ачкыч эч качан файл болбойт, жана анын каттоо жолу адатта OpenSSL буйругу эмес, өзүнчө курал. Кандай болбосун, жеке жарымын эч ким көрүшүнүн кереги жок.

Программалык агым мындай көрүнөт, ачкыч менен сурам бир сессияда жаралат:

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"

umask сабы көрүнгөнүнөн маанилүүрөөк. Ансыз ачкыч демейки боюнча уруксат берүүчү системада баары окуй ала тургандай жазылат, жана файлды кийин көчүрүү муну таратат. Бар ачкычты кайра колдонуу, эгер ал мурунтан корголгон жана саясатыңызга туура келсе, мыйзамдуу; ар бир түзмөк үчүн жаңысын жаратуу түшүндүрүүгө оңой.

2-кадам: инсандыкты сурамга салыңыз, электрондук почтага эмес

Сурам жаралганга чейин VPN чындыгында эмнени аутентификациялайарын чечиңиз, анткени ал жооп CSRдин ичинде жатат. OpenVPN салттуу түрдө кардардын инсандыгын сертификаттын жалпы атына байланыштырат, ал эми strongSwan сыяктуу куралдар инсандык сабын субъект же субъекттин альтернативдик аты менен салыштырат. Менин атым alice деген кат далил эмес, ал эми субъектисинде ошону айткан сурам бир аз гана жакшыраак.

Текшерүүчүңүз бирөөнү текшерсе, субъекттин альтернативдик атын кошуңуз, анткени заманбап салыштыруу эски CNди көбүнчө эске албайт:

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

CNди кыска, туруктуу жана ноутбук моделине эмес, аккаунтка байланган кармаңыз. Колдонуучунун түзмөгүнүн сериялык номери бар ат — биринчи аппараттык алмаштырууну күткөн колдоо маселеси.

3-кадам: кол коюудан мурун сурамды текшериңиз

Чыгаруучу эки башка нерсени текшерет, жана аларды аралаштыруу классикалык ката. Биринчиден, сурам ички жактан ырааттуу: кол тамга ал алып жүргөн ачык ачкычка каршы текшерилет. Экинчиден, сурам берүүчү сурам талап кылган нерсеге укуктуу, жана буга эч кандай криптографиялык текшерүү жооп бере албайт.

Механикалык бөлүгү бир буйрук, жана ал субъект менен бирге текшерүү натыйжасын басып чыгарышы керек:

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

Бул эмнени далилдегенине көңүл буруңуз. Текшерүүдөн өткөн сурам жөнөтүүчүдө тапшыруу учурунда тиешелүү жеке ачкыч болгонун гана көрсөтөт; ал жөнөтүүчүнүн субъектте аталган адам экенин далилдебейт жана суралган топко же маршрутка уруксат бербейт. Каттоону карап чыгуу өзүнчө дарбаза, ал эми эч ким ырастабаган топту сураган сурамды тынч өзгөртүүнүн ордуна четке кагуу керек.

4-кадам: уруксат бериңиз, анан ачык кеңейтүүлөр менен кол коюңуз

Кол коюу — CA сурамды сөзмө-сөз кабыл алуунун ордуна саясатты чечкен жер. Жарактуулук, ачкычты колдонуу жана роль кеңейтүүсү кеңейтүүлөр файлына таандык, алты айдан кийин эсиңизде болбой турган демейки маанилерге эмес. VPN аутентификациясы үчүн кардар сертификатына максат катары кардар аутентификациясы керек.

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

Эгер бирөө мурунтан колдонулуп жатса, бар сериялык файл менен -CAserial колдонуңуз, жана CA ачкычын офлайн же саясатыңыз атаган корголгон кампада кармаңыз. Сертификаттардын сериялык номерлери ар бир чыгаруучу үчүн уникалдуу болушу керек; сериялык файлды нөлдөн кайра жаратуу жокко чыгарууну бүдөмүк кылган кагылышуулардын тобокелдигин жаратат.

Эмне берилгенин жазып туруңуз: сериялык номер, субъект, суралган инсандык, ырастаган адам жана мөөнөт. Так ошол жазууга кийин жокко чыгаруу чечими таянат, жана эгер каттоонун изи почта ящигинде гана жашаса, аны сертификаттан гана кайра куруу мүмкүн эмес.

5-кадам: аны тиешелүү ачкычтын жанына орнотуп, жупту далилдеңиз

Кардар сертификатты жана чыгаруучунун чынжырын алат, эч качан ачкычты албайт. Туташуудан мурун сертификат дисктеги ачкыч менен чындыгында жупташканын ырастаңыз, анткени дал келбеген жуп алда канча кийин түшүнүксүз кол кармашуу катасын жаратат:

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

Эки дайджест дал келиши керек. Анан туташып, сервер жаза турган инсандык сиз уруксат берген инсандык экенин ырастаңыз, жөн гана туннель көтөрүлгөнүн эмес. Эгер ачкыч жоголсо же түзмөк алмаштырылса, жооп — жокко чыгаруу жана жаңы түзмөктөн жаңы сурам; администратордон башка жерден ачкычты кайра жөнөтүүнү суроо түпнусканы калыбына келтирбейт жана сурамды коопсуз кылган моделди тынч бузат.

Тектеш макалалар