Sizning VPN tunda soat 3 da ulanishlarga javob beradi, shu bilan birga uning sertifikatlariga imzo chekuvchi mashina tortmada o'chirilgan holda turadi. Server sertifikatini tekshiruvchi mijoz hech qachon sizning CA bilan bog'lanmaydi, shuning uchun CA hech qanday ulanish uchun ochiq bo'lishi shart emas. Rejalashtirishni talab qiladigan qism sertifikat berilishi, yangilanishi yoki bekor qilinishi kerak bo'lgan kun ildiz kaliti qulflangan holda qoladi.

Ulanish aslida nimani tekshiradi

OpenVPN mijozi ulanganda, u serverning barg sertifikatidan o'zi allaqachon ishonadigan CA sertifikatigacha imzo zanjirini bosib o'tadi, amal qilish oynasini tekshiradi va profil aytgan bo'lsa, bekor qilish ro'yxatiga murojaat qiladi. U hech qachon sizning ildiz CA'ngizni qidirmaydi. Server mijoz sertifikatlari uchun xuddi shu ishni oynaday bajaradi. Ulanish paytida faqat barg, oraliq va avval tarqatgan ishonch to'plami mavjud.

Aslida uch narsadan biri ishlamaydi: imzo kaliti berish paytida mavjud emas, bekor qilish ro'yxati eskirgan yoki mijozning ishonch to'plami server taqdim etgan zanjirdan eskiroq. Birinchisi jarayon muammosi; qolgan ikkitasi tarqatish muammolari. Hech biri ildiz kalitining onlayn bo'lishini talab qilmaydi, va tunnel autentifikatsiyasi uchun shaxsiy sertifikat talab qiladigan boshqariladigan VPN xizmati imzo vakolatini faqat provayderga o'tkazadi. Azure nuqtadan-saytga teskari ishlaydi: siz ildiz sertifikatini yuklaysiz va uning ostida imzolangan sertifikatlar ishonchli deb hisoblanadi, shuning uchun kim imzolaydi, kim tekshiradi va sertifikat qanday qilib muddatidan oldin qaytarib olinadi deb so'rang.

Ildizni hech qachon manzil olmaydigan xostda quring

Oflayn ildiz kamdan-kam ishlatiladi: oraliq CA sertifikatiga imzo chekish uchun, keyinroq uni yangilash yoki bekor qilish uchun. Qolgan hamma narsa bir daraja pastda bo'ladi. Ildiz ishini tarmoqdan chetda tutilgan mashinada, iloji bo'lsa tirik tizimdan bajaring va xonada kim bo'lganini yozib qo'ying. Buyruqlar OpenSSL 1.1.1 yoki yangiroqni nazarda tutadi, chunki -addext eski qurilmalarda yo'q.

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"

Oraliqni imzo xostida yarating va faqat uning so'rovini oflayn mashinaga olib boring. Ildiz bu so'rovga nol yo'l uzunligi bilan imzo chekadi, shuning uchun oraliq CA oxirgi nuqta sertifikatlariga imzo chekishi mumkin, lekin o'zi ostida boshqa CA yarata olmaydi. O'sha bitta kengaytma buzilgan imzo xostining ildizga teng vakolat yaratishini oldini oladi. ECDSA ni faqat har bir mijoz OpenVPN 2.4 yoki yangiroq ishlatsa qo'llang; aks holda RSA kalitlarini yarating va oqimni bir xil saqlang.

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 ichida basicConstraints=critical,CA:TRUE,pathlen:0, keyUsage=critical,keyCertSign,cRLSign va authorityKeyIdentifier=keyid:always bor. Imzo xosti qayta ulanmasidan oldin ildiz kalitini seyfiga qaytaring. Agar ildiz oraliqni bekor qila olishi kerak bo'lsa, uni openssl x509 -req o'rniga ildiz darajasidagi index.txt ga qarshi openssl ca -config root.cnf -extensions intermediate_ca bilan imzolang, seriya raqami yozib olinishi uchun; so'ngra olingan ildiz ro'yxatini mijoz profilining ichida yuboring, u yerda faylga asoslangan crl-verify uni ishga tushishda o'qiydi. Mijozlarga ikkala CA sertifikati bo'lgan to'plam yuboring; yakka barg ildizga qarshi tekshirilmaydi.

Barglarni oraliqdan bering, ma'lumotlar bazasi bilan

openssl x509 -req bilan imzo chekish bekor qilish kerak bo'lgunga qadar ishlaydi, chunki hech narsa seriya raqamini yozmaydi. Birinchi sertifikatdan boshlab openssl ca dan foydalaning, seriya raqami, muddat va bekor qilish holati bitta bazada yashashi uchun. Baza fayllarini bir marta yarating, so'ngra konfiguratsiyani ularga qarating:

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

Kalit ishlatish qatori ECDSA kalitini nazarda tutadi; RSA uchun keyEncipherment qo'shing. Har bir mijozga o'zining umumiy nomini bering, chunki OpenVPN ulanishni o'sha maydon bilan taniydi, va CN=vpn-client ni bo'lishadigan ikkita noutbuk jurnallarda, client-config-dir qoidalarida yoki har qanday foydalanuvchiga oid pushda ajratilmaydi, va siz bekor qilish qarorini himoya qilinadigan qiladigan atributsiyani yo'qotasiz. Bargni shunday bering va tekshiring:

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

Imzo kalitini VPN xostiga nusxalash o'rniga siyosat chegarasi ortida saqlang: so'rovni autentifikatsiya qiladigan, umumiy nomni ruxsat ro'yxati bilan taqqoslaydigan va faqat sertifikatni qaytaradigan kichik xizmat. Har bir seriya raqamini yozib boring; jurnal sertifikat va uni so'ragan shaxs o'rtasidagi yagona bog'lanishdir.

Ildizni uyg'otmasdan bekor qilishni e'lon qiling

Mijoz sertifikatlarini oraliq bekor qiladi, hech qachon ildiz emas. Ildiz ro'yxati faqat oraliq yondirilganda muhim. Serverni crl-verify bilan oraliq ro'yxatga qarating. Faylga asoslangan CRL xizmat boshlanishida yuklanadi, shuning uchun har bir qayta yaratishdan keyin qayta yuklang; katalog shakli ulanish paytida holatni o'qiydi va har bir seriya raqami uchun bitta fayl sarflaydi.

Xuddi shu bazadan ikkita buyruq bilan bekor qiling va qayta yarating:

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

So'ngra soatni kuzating. CRL keyingi yangilanish maydonini olib yuradi, va o'sha sana o'tgach tekshiruvchi tomon ro'yxatni e'tiborsiz qoldirish o'rniga rad etadi. default_crl_days = 30 bilan oylik qayta yaratish zaxira qoldiradi; yillik qoldirmaydi. Barglarning qisqaroq umri ishonchliroq nazorat, chunki bekor qilish faqat ro'yxat ko'riladigan joyda amal qiladi.

Zanjirni sinab ko'ring, so'ngra marosimni yozib qo'ying

Dizaynga ishonishdan oldin to'rtta nosozlikni qayta hosil qiling. Zanjirni openssl verify -CAfile ca-bundle.crt -untrusted intermediate.crt server.crt bilan tekshiring. Muddati o'tgan mijoz sertifikati bilan ulanib, server uni rad etishini tasdiqlang. Sinov mijozini bekor qiling, qayta yuklang va ro'yxat kuchga kirishini tasdiqlang. Xostning soatini bir kun oldinga suring, chunki noto'g'ri soat boshqa joyda haqiqiy ko'rinadigan sertifikatlarni berishi va rad etishi mumkin.

Oflayn ildiz faqat qog'ozlar mavjud bo'lganda nazorat: marosim uchun ikkita nomlangan shaxs, har bir imzolangan seriya raqamining yozuvi, mashinadan alohida saqlangan shifrlangan zaxira nusxasi va izolyatsiyalangan xostda tiklash sinovi. Xuddi shu marosimda zaxira oraliq CA ga imzo cheking, o'lik imzo xosti sizni yarim tunda ildizni ochishga majburlamasligi uchun.

Buni tugallangan deb atashdan oldin beshta narsani tasdiqlang: ildiz kaliti tarmoqqa ulangan xostda emas, oraliq kalit faqat imzo xostida yashaydi, mijoz to'plami ikkala CA sertifikatini olib yuradi, CRL da kelajakdagi keyingi yangilanish bor, va zanjirdagi har bir muddat uchun kimningdir kalendar yozuvi bor. Agar bittasi yetishmasa, oflayn ko'ringan sozlama shunchaki hujjatlashtirilmagan.

O'xshash maqolalar