Операторът изпраща адрес и потребителско име, а клиентът иска файл на ЦС, сертификат и ключ. Генерирането на тези три локално изглежда очевидната следваща стъпка. Получава се сертификат, в който вярва само вашата машина. Доверието на сървъра е закотвено в ЦС, която не контролирате, затова ръкостискането приключва, преди да започне.

Доверието живее на сървъра, не в профила ви

Удостоверяването със сертификат е сравнение. Клиентът представя сертификат; шлюзът проверява дали е подписан от една от ЦС в конфигурацията му.

Профилът ви посочва файла на ЦС, който клиентът трябва да използва, за да провери сървъра. Той не може да посочи ЦС, която сървърът трябва да използва, за да провери вас. Тази половина от конфигурацията не е ваша.

Саморъчно направеният сертификат не издържа това сравнение дори когато е технически безупречен. Има валиден подпис, субект и дати, но издателят е ЦС, за която шлюзът никога не е чувал. Грешката се появява по време на ръкостискането, след като сървърът вече е поискал сертификат. Нищо в клиентския профил не може да промени отговора.

Защо самоподписан сертификат не може да го замести

Самоподписаният сертификат е подписан със собствения си ключ. Подписът се проверява срещу същия файл, което го прави самосъгласуван и безполезен като удостоверение за чужд шлюз.

Шлюзът не пита дали сертификатът е вътрешно съгласуван. Пита дали доверен издател го е подписал.

Затова съобщенията за грешки объркват. Клиентът може да съобщи за неуспех при проверка, който звучи като проблем на сървъра, докато сървърът записва неизвестен издател. И двете описват едно и също несъответствие от противоположни страни.

Пътят през CSR запазва вашия частен ключ

Все още можете да свършите по-голямата част от работата локално. Генерирайте двойка ключове, изградете заявка за подписване на сертификат около публичната половина и изпратете заявката на оператора. Само заявката напуска машината ви. Частната половина остава там, където я създадохте.

openssl req -new -newkey rsa:3072 -nodes -keyout client.key -out client.csr -subj "/CN=laptop-01"

Операторът подписва заявката със своята ЦС и връща сертификат. Вашият частен ключ никога не е пътувал, а резултатът се свързва с котвата, на която шлюзът вярва.

Управляваните услуги често пропускат CSR и издават целия пакет. Това е разумна размяна, когато същият доставчик вече терминира тунела и държи ЦС. Съхранението на ключа не се подобрява от това, че го пазите, защото доставчикът може да изсече нов по всяко време.

Пакетите се импортират, не се инсталират

Доставчикови пакети със звучни имена за сигурност често са профили на OpenVPN. Те съдържат конфигурация и понякога сертификати и не инсталират нищо. Импортирайте файла в клиент, който говори протокола, и връзката е конфигурирана.

Правилото за работа следва от съдържанието. Ако профилът вгражда частен ключ, това е удостоверение и заслужава същата грижа като парола: без имейл, без хранилище, без споделена папка за изтегляния. Когато операторът достави ca.crt, client.crt и client.key поотделно, съхранявайте ги заедно с ограничителни права и насочете профила към тях.

Добавете проверките, които операторът може да е пропуснал

Профилът, генериран от рутер, понякога няма проверка на партньора. remote-cert-tls server изисква сертификатът на партньора да носи предназначението за удостоверяване на сървър, така че клиентски сертификат не може да бъде преигран като сървър. Този един ред е малка промяна с ясно основание.

verify-x509-name отива по-далеч, когато операторът може да назове очаквания субект или SAN. И двете са малки допълнения към профила и двете са защитими. Прегледайте какво сте получили, преди да го импортирате.

openssl x509 -in client.crt -noout -issuer -subject -dates
openssl verify -CAfile ca.crt client.crt

Настройките за проверка не са ремонт на счупена верига. Ако издателят е грешен, отговорът е сертификат от правилната ЦС, а не флаг, който изключва проверката. Изключването на проверката превръща неуспеха при удостоверяване в неоткрит.

Поискайте един пакет: сертификата на органа като PEM, клиентски сертификат, подписан от този орган, ключ, който сте генерирали или който е пристигнал по канал, на който вярвате, и точното име на сървъра, което сертификатът трябва да представи. Отбележете датата на изтичане в същото съобщение, защото изтекъл сертификат изглежда като мрежова повреда месеци по-късно.

Подобни статии