Три различни прашања добиваат одговор од три различни делови на OpenVPN профил, и токму нивното спојување води до тоа луѓето да исклучат проверка што работела. Дали сертификатот на соговорникот е потпишан од органот на кој му верувам? Дали тој сертификат ја декларира улогата TLS сервер? Дали е тоа токму серверот што сакав да го достигнам? remote-cert-tls server одговара само на средното прашање и тоа го прави читајќи ги екстензиите во сертификатот.

Три проверки што лесно се спојуваат во главата

Сидрото на доверба живее во директивата ca. Проверката на улогата припаѓа на remote-cert-tls. Проверката на идентитетот припаѓа на verify-x509-name, кога профилот ја користи, или на која било проверка на име што ја додава распоредувањето.

Тие покриваат различни дефекти:

QuestionDirectiveFailure it catches
Who signed this?caCertificate from an unrelated authority
Is this a server?remote-cert-tlsClient certificate presented by a peer
Is this my server?verify-x509-nameAnother valid server from the same CA

Профилот може да ги има сите три и сепак да биде слаб ако CA е споделен премногу широко, што е прашање на управување со клучеви, а не на директива.

Што чита проверката на улогата

Директивата е макро. Таа се проширува во барање за користење клуч и барање за проширено користење клуч што ја именува улогата TLS веб-сервер, па сертификатот на соговорникот мора навистина да ја декларира таа намена. Сертификат издаден за автентикација на клиент не го задоволува тоа, дури и кога истиот орган ги потпишал и двата.

Тоа е важно затоа што споделен CA е вообичаен во мали распоредувања. Еден орган потпишува секој клиент и серверот, и без проверка на улогата кој било од тие сертификати би можел да ја заврши серверската страна на ракувањето. Проверката не го прави тоа сценарио невозможно, но ја отстранува неговата тривијална верзија.

Директивата е асиметрична по дизајн: клиентите носат remote-cert-tls server, а серверите носат remote-cert-tls client. Заменете ги и секоја врска паѓа со грешка за улога што изгледа како расипан сертификат.

Постари профили понекогаш користат ns-cert-type за истата цел. Тековните страници од прирачникот ја третираат таа опција како заменета, па профил што сѐ уште се потпира на неа вреди да се пресели наместо да се дебагира.

Зошто исклучувањето изгледа како поправка

Кога проверката на улогата не успева, врската запира со грешка при проверката и очигледниот чекор е да се избрише линијата. Врската потоа се крева, што изгледа како напредок и всушност е режимот на дефект што директивата постои за да го спречи. Сега прифаќате соговорник чиј сертификат никогаш не бил наменет за таа улога.

Наместо тоа прочитајте ја грешката. Таа ја именува проверката што не успеала, а сертификатот од другата страна може да се прегледа за да се види кои екстензии навистина ги носи. Две минути читање одлучуваат дали дефектот е во издавањето или во конфигурацијата. Погодувањето чини едно попладне и обично завршува со ослабен профил. Обновен серверски сертификат што го загубил проширеното користење клуч е вистински дефект во обновувањето, а не причина да го олабавите клиентот.

Проверката на името е одделна директива

Задоволувањето на проверката на улогата значи дека соговорникот е некој сервер потпишан од вашиот орган. Тоа не кажува ништо за тоа кој, што е важно кога истиот CA издава сертификати за неколку порти и една од нив е компромитирана или прераспределена.

verify-x509-name го споредува субјектот на сертификатот со вредност што ја конфигурирате, со режими на совпаѓање за точен субјект, префикс или едно поле. Користете го полето што навистина ја идентификува портата и очекувајте намерно да го ажурирате кога името ќе се промени.

Ниту една од директивите не го заменува доброто ракување со клучеви. Ако клиентската датотека со клуч се копира наоколу со профилот, идентитетот на соговорникот е силен колку и списокот за дистрибуција.

Прегледајте го сертификатот пред да го уредите профилот

Прочитајте го сертификатот на соговорникот и клиентскиот дневник, по тој редослед. Сертификатот ви кажува кои улоги ги декларира; дневникот ви кажува која проверка го одбила.

Овие команди ги печатат екстензиите за користење и линиите за проверка од детална врска:

openssl x509 -in server.crt -noout -text | grep -A1 -E "Key Usage|Extended Key Usage"
sudo openvpn --config client.ovpn --verb 4 2>&1 | grep -i verify

Ако екстензиите ја покажуваат улогата на сервер, а дневникот сѐ уште пријавува дефект на улогата, профилот веројатно покажува на погрешна датотека со сертификат, а не на лош сертификат. Ако екстензиите покажуваат само автентикација на клиент, престанете да го гледате клиентот и поправете го издавањето. Во секој случај, вратете ја проверката пред да ја наречете врската здрава, бидејќи успешно ракување по отстранувањето на проверката докажува помалку од грешката што ја заменило.

Поврзани статии