Самопотпишан 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 има свој животен циклус на издавање и отповикување. Ако приватниот клуч истече, повторното верување на копија од истиот сертификат не поправа ништо; идентитетот мора да се замени.
Ако предупредувањето ги преживее сите пет проверки, корисното прашање не е кое копче го замолчува, туку кое складиште клиентот навистина го чита и од каде дошол тој корен. Одговорете на тоа, и увозот што ќе го направите станува одлука наместо рефлекс.