Самопотписани VPN сертификат: шта значи и у шта верује
Самопотписани VPN сертификат и даље шифрује саобраћај. Мења се то коме сте рекли да му верује, које складиште прима то поверење и које провере остају.
Овде највише штете праве два уверења: да самопотписани VPN сертификат значи да тунел није шифрован, и да инсталирање свега што је затражио VPN клијент утиче само на VPN. Ниједно не преживљава контакт са стварним распоређивањем. Самопотписани сертификат описује однос потписа, а не безбедносну пресуду, а обухват поверења које додајете зависи од тога у које складиште стигне. Видео сам како служба за подршку увози корен добављача у Windows машину да утиша једно упозорење, а затим проводи цело поподне објашњавајући зашто је прегледач престао да се жали на неповезани портал. Две половине овог питања припадају заједно, зато их третирајте као једно.
Сертификат није складиште поверења
Датотека коју сервер представља носи јавни кључ, назив субјекта, назив издаваоца, датуме важности и проширења. Самопотписан значи да су субјект и издавалац исти ентитет и потпис се проверава сопственим кључем сертификата. Ништа у тој дефиницији не каже да је веза слаба, и ништа не каже да ће је клијент прихватити.
Прихватање долази са другог места: CA датотека на коју упућујете клијента, отисак који ручно поредите, или корен који већ стоји у складишту које клијент чита. Распоређивање може бити потпуно здраво, а да би његов сертификат пао на сваком јавном тесту. openssl verify против системског пакета пријавиће непознатог издаваоца, и тај извештај је тачан, а не дефект.
Опција ca OpenVPN-а је најјаснији случај поверења ограниченог на апликацију. Та датотека именује сидра која ће клијент прихватити, и може да садржи један приватни CA или, у малом распоређивању, сопствени самопотписани сертификат сервера. Верзија 2.6 прихвата и --peer-fingerprint за причвршћивање SHA-256 отиска уместо дистрибуирања CA датотеке. WireGuard стоји још даље: тамо уопште нема сертификата, само статични јавни кључ за сваког партнера, тако да се питање самопотписа на њега не односи.
Где инсталирате поверење одлучује ко ће га наследити
Ставите исти сертификат на три места и добијате три различита радијуса дејства. Пакет који чита само VPN клијент утиче на тог клијента. Корен у складишту оперативног система утиче на сваки програм који се обрати том складишту. Прегледач са сопственом базом поверења може да игнорише оба, и зато упозорење може да преживи увоз који је изгледао успешан.
На Debian-у или Ubuntu-у, стављање датотеке у /usr/local/share/ca-certificates/ и покретање update-ca-certificates мењају системски пакет. На Windows-у certutil -addstore -f Root пише у складиште машине и захтева подигнут командантни ред, док додавање -user циља складиште тренутног корисника; то двоје није заменљиво. Firefox држи сопствену NSS базу, тако да се увоз на нивоу ОС можда никада неће појавити тамо.
Обухват је важан због онога што једно тело може да учини. Издајући CA може да потписује називе са којима нема никакву везу, па ће све што верује том складишту прихватити те потписе. Један причвршћени лист то не може; он аутентификује тачно један идентитет партнера. Ако је циљ да се један VPN повеже, CA ограничен на апликацију или причвршћени лист то постижу, док је корен на нивоу целе машине далеко већа уступка него што симптом захтева.
Још увек шифрујете без јавног CA-а
TLS руковање изводи сесијске кључеве без обзира на то да ли се сертификат партнера ланчано везује за нешто у шта већ верујете. Самопотписан не значи обичан текст и не значи да је саобраћај читљив у лету. Значи да клијент нема априорни разлог да верује да кључ припада серверу који је затражио.
У тој празнини живе прави напади. Клијент подешен да прихвати било који сертификат, било кроз искључено подешавање провере било кроз дугме „ипак веруј“ притиснуто једном и заборављено, шифроваће срећно ономе ко одговори. Пресретање се дешава у кораку аутентификације, пре него што се подаци апликације помере. Шифровање без провере идентитета држи пасивног посматрача напољу и чини мало шта друго.
Поверење у издаваоца не прескаче проверу назива
Валидација ланца, поклапање назива и намена сертификата су одвојене одлуке. Ланац може бити важећи док је назив погрешан, а назив може да се поклопи док је сертификат издат за другу улогу. RFC 5280 дефинише поља која носе та ограничења, а колико строго их клијент спроводи питање је за сваку апликацију.
OpenVPN чини поделу видљивом. verify-x509-name причвршћује очекивани субјект кроз поклапање name, name-prefix или subject. remote-cert-tls server захтева да сертификат партнера буде употребљив као серверски сертификат, што одбија сертификат само за клијента чак и када је издавалац поуздан. Ниједно од подешавања се не замењује слањем CA датотеке.
Прегледајте сертификат пре него што било шта одлучите:
openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltNameпоказује ко га је издао, за које називе и до када.openssl verify -CAfile ca.crt server.crtпроверава да ли ланац који планирате да пошаљете заиста валидира лист.openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -CAfile ca.crt -verify_return_errorради за TLS крајње тачке као што је веб портал; OpenVPN протокол на 1194 није обичан TLS ток, тако да тај тест тамо не важи.
Сертификат са истеклим датумом, без subjectAltName за назив на који се повезујете, или без употребе serverAuth пада без обзира на то колико је пажљиво сидро инсталирано.
Пет провера пре него што прихватите један
Упоредите отисак преко канала који није веза коју покушавате да поправите: конзола, инсталер који већ имате, потписана конфигурациона датотека. openssl x509 -in server.crt -noout -fingerprint -sha256 на серверу и иста вредност у дневнику клијента довољни су да знате да гледате један објекат.
Затим одлучите шта инсталирате: један лист или тело које може да искује више. Потом одлучите где иде, и именујте апликације које читају то складиште. Запишите путању уклањања док је још памтите, јер веруј-и-иди-даље је начин на који привремени увоз постаје трајан.
На крају, испланирајте промену. Причвршћени сертификат или отисак мора да се ажурира преко истог поузданог канала када се сертификат ротира, а приватни CA има сопствени животни циклус издавања и опозива. Ако приватни кључ исцури, поновно поверење у копију истог сертификата не поправља ништа; идентитет мора да се замени.
Ако упозорење преживи свих пет провера, корисно питање није које дугме га утишава, већ које складиште клијент заправо чита и одакле је дошао тај корен. Одговорите на то, и увоз који ћете урадити постаје одлука уместо рефлекса.