Исто име на датотека ca.crt, друг сертификат: што да се спореди
Два профила можат да доставят ca.crt со различно содржина. Земете отпечаток од она што процесот го вчитува, потоа проверете дали тоа е предвиденото сидро на доверба.
Двата профила доставуваат датотека со име ca.crt, едниот тунел се крева, а другиот паѓа со грешка во синџирот. Отворањето на двете датотеки една до друга ретко го решава тоа, а исклучувањето на проверката го решава во погрешна насока. Прашањето што грешката всушност го поставува е потесно: кој сертификат секој процес го вчитува како свое сидро на доверба и дали двете се истиот објект? Одговорете прво на тоа и остатокот од дијагнозата добива насока. Името на датотеката е етикета за пакување, а патеката запишана во профилот исто така не е авторитативна, така што сѐ зависи од тоа што процесот навистина чита.
Најдете го сертификатот што клиентот навистина го вчитува
OpenVPN ја прифаќа власта во два облика, а обликот одлучува кои бајти се важни. Профилот може да покажува на надворешна датотека со ca или да го вгради сертификатот во блок <ca> во самиот профил. Кога постојат и двете, победува вградениот блок и датотеката покрај профилот никогаш не се отвора.
Прочитајте го профилот што не успева и откријте кој облик го користи пред да споредите нешто. Копија земена од соседен директориум или од пакетот од кој дошол другиот профил не ви кажува ништо за тоа на што верува овој процес. Истото важи и за патеката во конфигурацијата: таа се решава во однос на местото каде што е стартуван клиентот, што не е секогаш директориумот што го гледате. Читајте го профилот, не папката.
Сертификатите се идентификуваат по нивната содржина: јавниот клуч, субјектот и издавачот, периодот на важност и потписот врз сето тоа. Две датотеки со идентични бајти се истиот сертификат како и да се наречени, а две датотеки со исто име можат да бидат неповрзани власти. Името е етикета за пакување, не идентитет.
Земете отпечаток од двете копии со openssl
Отпечатокот е хаш врз DER-кодирањето на сертификатот, обликот што потписот го покрива, така што краевите на редовите и текстот на заглавието не можат да влијаат врз него. Пресметајте го за секоја датотека и имате две хексадецимални низи одвоени со две точки што или се совпаѓаат или не. За да се одговори на прашањето за споредба, не треба да се чита ништо друго во сертификатот.
openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256
Искушувачки е да се насочи openssl кон самиот профил, но тој го чита првиот блок на сертификат што се појавува во датотеката, а профилот обично носи <cert> пред <ca>. Извлечете го блокот на власта, потоа земете отпечаток од извлечената датотека, зашто тоа е копијата што клиентот навистина ќе ја користи.
sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256
Идентичните отпечатоци значат дека материјалот за доверба е ист и грешката во синџирот има друга причина, што е друга истрага. Различните отпечатоци значат различни сертификати и токму таму започнува следниот дел.
Прочитајте несовпаѓање пред да претпоставите напад
Различните отпечатоци значат различни сертификати и ништо повеќе. Повторното издавање, ротацијата, преименуваната власт или застарениот пакет сите создаваат различни датотеки со сосема легитимни истории. Која припаѓа на распоредувањето е прашање за операторот или записот за распоредување, а не за времето на измена на датотеката. Архивите копираат временски ознаки, така што поновата датотека не е автоматски правилното сидро.
Коренот што сам се потпишува е нормален, така што наоѓањето на таков не е доказ за проблем. Задача на проверувачот е да изгради пат од сертификатот на серверот до сидрото што му е дадено, а грешката во синџирот обично значи дека тој пат не можел да се заврши.
Проверете дали сидрото на профилот што не успева е власт од која распоредувањето сѐ уште издава. Ако отпечатокот не се совпаѓа со ништо во записот за распоредување, профилот е едноставно застарен, и никакво прилагодување на страната на клиентот тоа нема да го поправи.
Вратете ја довербата без исклучување на проверката
Краткорочното решение е да ја исклучите проверката или да го додадете секој сертификат во синџирот како сидро. И двете ја прават пораката да исчезне и двете менуваат кои сервери клиентот оттогаш ќе ги прифаќа. Вклучете ја проверката повторно, инсталирајте го предвиденото сидро и тестирајте повторно.
Ако синџирот сега се гради, но се појави друга грешка, тоа е напредок: проверката на името, датумите на важност и отповикувањето се одделни проверки со одделни пораки. Чувајте го парот отпечатоци и оригиналниот текст на грешката заедно во тикетот, за да види следното лице кое сидро е вчитано и кое се очекувало. Парот отпечатоци е доволно мал за да се залепи во белешка за предавање, и следниот случај тогаш трае пет минути наместо попладне.
Набавете ја правилната власт преку истиот автентициран канал што го доставил профилот. Извлекувањето на сертификат од серверот затоа што неговиот субјект изгледа познат е друго дејство и тивко го проширува она на што клиентот ќе верува.