VPN сертификат органын ауыстырғанда не болады
VPN CA-ын ауыстыру сенім мен жеке басты жеке-жеке өзгертеді. Валидаторлар нені тексереді, ескі туннельдер неге аман қалады және екі бағыттың да жұмыс істейтінін қалай дәлелдеуге болады.
VPN сертификат органын ауыстыру файлды ауыстыру емес. Жаңа CA өзінің бірінші сертификатына қол қойған сәтте тек ескісіне сенетін әрбір валидатор шешім қабылдауы керек, ал жаңа якорьді ешқашан алмайтын хосттар жақсы серіктестерді қабылдамайды. Мен мұның екі бағытта да бұзылғанын көрдім: шлюз жаңа CA-ды үйренді, клиенттер үйренбеді, сондықтан жаңа қосылымдар сәтсіз аяқталды, ал бұрыннан көтерілген туннельдер сол күйінде қалып, үзілісті маршруттау мәселесіне ұқсатты. Міне, не өзгеретіні, ақаулар пайда болатын ретпен.
Бір ауыстыру, екі бөлек өзгеріс
Сертификат органы — бұл ат, ашық кілт және қол қоятын жабық кілт. Валидаторлар «CA-ға» дерексіз түрде ешқашан сенбейді. Олар сенім қоймасында әлдеқашан тұрған нақты бір сертификатқа сенеді және қолтаңбалар тізбегі сол сақталған көшірмеге жеткенде ғана шығарушыны қабылдайды. Сондықтан CA-ды ауыстыру бір-біріне тәуелсіз істен шығатын екі нәрсені өзгертеді: қандай якорьдер қабылданады және олардың астында қандай серіктес жеке бастары берілген.
VPN орналастыруларының көбі екі бағытта да тексереді. Клиент шлюз сертификатын, ал шлюз клиент сертификатын аутентификациялайды. Тек клиент бумасын жаңартатын ауыстыру серверді ескі CA жеке басын әлі ұсынып отырған әрбір клиентті қабылдамауға мәжбүр етеді, ал керісінше де соншалықты жиі. Алдымен орындау нүктелерін түгендеңіз: клиенттердің сенім қоймалары, шлюздің ca файлы, оның алдында TLS-ті аяқтайтын кез келген прокси және соңғы нүктені сырттан тексеретін зонд.
Валидатор нені тексереді, ретімен
Жолды валидациялау серіктес сертификатынан аралықтар арқылы сенімді якорьге жеткенше көтеріледі. Әр қадамда ол қолтаңбаны тексереді, әрбір сертификаттың өз жарамдылық терезесінде екенін қадағалайды және негізгі шектеулер мен кілт қолданысының шығарушыға қол қоюға рұқсат беретінін растайды. Содан кейін ғана қосымша жапырақ сертификатына қарайды: субъектінің баламалы атаулары терілген атауды қамтуы керек, ал кеңейтілген кілт қолданысы сервер немесе клиент аутентификациясына рұқсат беруі керек.
Бұл жолды офлайн қайталау үшін -CAfile көрсеткішін орнатылатын нақты бумаға бағыттаңыз. Әйтпесе жүйе қоймасын емес, хосты тексересіз:
openssl verify -CAfile new-ca.crt gateway.crt
openssl verify -CAfile new-ca.crt -untrusted intermediate.crt client.crt
openssl x509 -in gateway.crt -noout -subject -issuer -dates
openssl s_client -connect gw.example.net:443 -CAfile new-ca.crt
Бұл команда тек қарапайым TLS тыңдаушысына қарсы жұмыс істейді, мысалы шлюздің HTTPS әкімшілік беті; OpenVPN басқару арнасы TLS-тен бұрын келеді, сондықтан s_client туннельдің қол алысуын тексере алмайды.
Сол қателердің артындағы жол құру ережелері RFC 5280 6-бөлім ішінде тұр. Олар әйтпесе қалаулы көрінетін сәтсіздіктерді түсіндіреді: ешкім есінде сақтамаған мерзімі өткен аралық, кілт қолданысы қол қоюға тыйым салатын сертификат немесе сіз тексеретін хостты алып тастайтын ат шектеуі.
Ескі туннель неге жұмысын жалғастырады
TLS пен OpenVPN екеуі де қол алысу аяқталғаннан кейін орнатылған сессияны тірі ұстайды. Ештеңе серіктес сертификатын әр пакет сайын қайта тексермейді, сондықтан өзгеріске дейін қосылған клиент қайта келіссөз, қайта қосылу немесе туннель құлағанға дейін трафикті өткізе береді. Дәл осы алшақтық CA ауыстырудың бір сағат жақсы көрініп, сосын ең нашар сәтте істен шығуына себеп: ноутбук ұйқыдан оянады, NAT бейнелеуі бітеді, шлюз қайта іске қосылады.
Сессияны жалғастыру бұл елесті одан әрі созады. TLS сессия билеті клиентке сертификаттарды қайта жібермей оралуға мүмкіндік береді, ал жалғастыру жол валидациясын өткізіп жібереді, өйткені бірінші қол алысу оны әлдеқашан жасаған. Сондықтан адал сынақ — жаңа процестегі толық қол алысу. Туннельді қайта қосу орнына клиентті қайта іске қосыңыз, ал сынақ профилінде билеттерді өшіруді қарастырыңыз, сонда жалғастыру жолы сынған тізбекті жасыра алмайды.
Статикалық кілт қабатын бұдан бөлек ұстаңыз. tls-auth басқару арнасына HMAC қосады, tls-crypt оны шифрлайды және аутентификациялайды, және ешқайсысы сертификат материалын тасымалдамайды, сондықтан кез келгенін айналдыру — өз ақау режимі бар жеке өзгеріс. Екеуін шатастыратын орналастырулар статикалық кілті дұрыс, сертификаты ескірген және қате хабарламасы екеуін де атамайтын клиентпен аяқталады.
Субъект атын қайта қолдану тұзағы
Төменде ештеңе өзгермеуі үшін ізашардың айрықша атын қайта пайдалану қызықтырады. Бұл интерфейсте шығарушы жолын тұрақты ұстайды және сізге қажет жалғыз сигналды жояды. Субъектілері бірдей, кілттері әртүрлі екі сертификатты ат бойынша ажырату мүмкін емес, сондықтан екі якорьді ұстаған бума валидаторға екі үміткер береді, таңдау ережесінсіз.
Сонда жол құру дұрыс емесін таңдауы, дұрыс якорь орнында тұрғанда «жергілікті шығарушы сертификаты алынбады» деп хабарлауы немесе үміткерлер реті бөлек болғандықтан бір хостта сәтті болып, екіншісінде осы бумамен сәтсіз аяқталуы мүмкін. Атты қайта қолдану міндетті болса, өтпелі кезеңде екі якорьді бөлек файлдарда ұстап, оларды анық жүктеңіз, және әр серіктес жаңа шығарушыны ұсынғанда ғана біріктіріңіз. Әйтпесе ауыстыруға бөлек жалпы ат беріңіз — буын немесе күн жұрнағы жеткілікті — журналдар мен қате мәтіндері сәтсіз серіктестің қай органның астында берілгенін айтсын.
Желіні құлатпайтын айналдыру
Жоспарлы ауыстыру үшін бір қадаммен ауыстырудың орнына шектеулі уақытқа екі якорьді де қабылдаңыз. Жаңа CA мен оның аралықтарын шығарыңыз, жаңа якорьді әр валидатордың бумасында ескінің жанына қойыңыз және содан кейін ғана одан серіктес сертификаттарын шығара бастаңыз. Ескі жеке басы бар серіктестер ескі якорьге қарсы валидацияланады; жаңалары жаңасына қарсы жұмыс істейді.
Осы ретпен жасалса, әр қадам қайтарылады. Сіз жалтаратын сәтсіздік — бір мезгілде ауыстыру: бума жаңартуын өткізіп алған клиент ескі якорьді әлдеқашан шығарып салған шлюзге тап болады, қол алысу өледі және ешбір журнал қай жақтың ескіргенін айтпайды.
Қарсы бағытта шығарып салыңыз. Аман қалуы керек әрбір жеке басты қайта шығарыңыз, әрқайсысы жаңа тізбекті ұсынатынын растаңыз, содан кейін бумалардан ескі якорьді алып тастаңыз. Ескі CA-дың жабық кілтін қызметтен шығарыңыз, өйткені әлі қол қоя алатын шығарушы айналдырудың аяқталмағанын білдіреді. Сертификаттар мен беру жазбаларын аудит үшін сақтаңыз. Жоғалған шығарушы сол сенімге қалпына келеді; әшкерелену жаңа жеке бастарды талап етеді және ескі якорьге қайтуға болмайды.
Файлдар тізімін емес, нәтижені тексеріңіз
Күтілетін қалтадағы сенім файлы азды дәлелдейді. Қосымша басқа жолды, басқа форматты немесе жаңарту ауыстыратын буманың ішіндегі көшірмені оқуы мүмкін. Файлдың бар-жоғын емес, екі шеттегі мінез-құлықты тексеріңіз.
Жаңа жеке баспен жаңа қосылымның сәтті болатынын растаңыз, содан кейін шығарылып салынған CA берген жеке бастың қабылданбайтынын растаңыз. Адамдар өткізіп жіберетін екінші сынақ дәл осы, және ескі органның енді рұқсат бермейтінін көрсететін жалғыз сынақ. Орналастыру CRL немесе OCSP-ға сүйенсе, жаңа сертификаттардағы тарату нүктелері шешілетінін және сұрайтын серіктестер жауап берушіге жете алатынын тексеріңіз.
Ешқашан қосылмаған клиентпен аяқтаңыз: оның профиль күйін өшіріңіз, қосылыңыз және келісілген тізбекті оқыңыз. Кэштелген сессияны жалғастырған серіктес ештеңе тексермесе де, көшірудің сәтті болғанын қуана хабарлайды.