Оновлений сертифікат VPN: деякі клієнти все ще відхиляють його
Оновлення може зберегти ім’я та змінити об’єкт. Порівняйте довіру до CA, перевірки імені та закріплення на боці клієнта, перш ніж приймати будь-яке попередження безпеки.
Половина парку перепідключається після оновлення, а три пристрої відмовляють, кожен із попередженням про ідентичність шлюзу. Саме оновлення — рутина. Те, що зберігають ці три пристрої, — закріплення старого об’єкта, і закріплення — це не список CA, не перевірка імені й не запис у сховищі довіри. Порівняйте три механізми, перш ніж торкатися будь-якого клієнта.
Одне оновлення, дві поведінки
У клієнтів, які перепідключаються, рішення про довіру ще проходить, а в тих, які відмовляють, є вимога, якій новий сертифікат не відповідає. Ця різниця — інформація, а не шум. Прочитайте повідомлення клієнта, який не проходить, точно. Розбіжність імені, невідомий видавець і змінений відбиток — три різні вердикти, і лише останній вказує на закріплення.
Перевірте також, який профіль вибрав клієнт, що не проходить. Імпортована копія, що живе у власному сховищі, не змінюється, коли адміністратор редагує оригінальний файл деінде.
Оновлення замінює об’єкт, а не лише дату
Відбиток ідентифікує закодований вміст сертифіката. Оновлення створює новий сертифікат, тому відбиток змінюється, навіть коли ім’я суб’єкта та відкритий ключ залишаються тими самими. Це очікувано й нешкідливо для клієнтів, які довіряють CA та перевіряють ім’я. Це згубно для клієнта, налаштованого приймати рівно один сертифікат, і так само згубно для клієнта, чиє сховище довіри так і не отримало нового видавця.
openssl x509 -in server.pem -noout -subject -issuer -dates -fingerprint -sha256
openssl x509 -in server.pem -noout -pubkey | openssl sha256
Другий рядок відповідає на інше питання: чи пережила пара ключів. Оновлення, яке повторно використовує ключ, зберігає це значення і змінює лише сертифікат, і саме в цьому випадку адміністратор схильний припустити, що нічого не змінилося. Огляньте розгорнутий сертифікат, а не той, що на складальному хості. Порівняння файлу в репозиторії доводить, що було згенеровано, а не те, що зараз представляє слухач.
Прочитайте, що закріплює клієнт
Одні клієнти тримають відбиток у своєму профілі й порівнюють його під час кожного з’єднання. Інші зберігають його у сховищі довіри платформи, а ще інші покладаються лише на CA. Виправлення в кожному випадку різне, тому спершу визначте механізм.
grep -n 'peer-fingerprint' /etc/openvpn/client/*.conf
openssl s_client -connect gw.lab.example.net:443 -servername gw.lab.example.net < /dev/null 2>&1 | openssl x509 -noout -fingerprint -sha256
Перша команда показує закріплення у звичайному профілі; друга показує відбиток, який кінцева точка справді надає зараз. Коли ці два різняться, ви знайшли несправність, не вгадуючи. Не вставляйте нове значення в кожного клієнта, що скаржиться. Клієнт, який відмовляє через видавця, продовжить відмовляти, і ви переконаєте себе, що проблемою був відбиток, коли це не так.
Порівняйте сертифікат, який надає кожен backend
Переривчасті результати зазвичай означають більше ніж одну кінцеву точку, і оновлення, застосоване на одному вузлі, залишає інші показувати старий об’єкт. Порівнюйте кожен backend за адресою, а не за спільним ім’ям.
for h in 10.30.0.11 10.30.0.12; do echo "$h"; openssl s_client -connect $h:443 -servername gw.lab.example.net < /dev/null 2>&1 | openssl x509 -noout -subject -dates -fingerprint -sha256; done
Пул, у якому один вузол відстає, пояснює клієнта, який підключається з другої спроби й відмовляє з першої. Це ж пояснює перевірку моніторингу, яка проходить, поки користувачі скаржаться. Спершу усуньте відставання. Прокрутка конфігурації довіри до того, як кожен вузол почне надавати новий сертифікат, створює вікно, у якому нічого не працює, а прокрутка після цього залишає клієнтів непередбачувано відмовляти.
Змінюйте довіру керованим шляхом
Підтвердьте заміну через уже довірений адміністративний канал, перш ніж приймати її будь-де. Правдоподібна дата завершення — не доказ володіння. Оновлюйте керовану конфігурацію через процес, який нею володіє, з будь-яким запланованим перекриттям прийнятних ідентичностей, і зберігайте перевірку імені, якої вимагає розгортання. Закріплення без перевірки імені — слабший дизайн, ніж довіра до CA, яку воно замінило.
Потім перевірте кожного клієнта: підключіться, підтвердьте прийняту ним ідентичність і зафіксуйте версію сертифіката, якій він тепер довіряє. Одного разу відкинуте попередження має звичку повертатися під час наступного оновлення.