Чи є самопідписаний SSL-сертифікат помилковим почуттям безпеки?


30

Чи є сертифікат SSL, який підписує себе, помилкове почуття безпеки?

Якщо вам підслуховують, користувач просто прийме сертифікат, як це робить він.

Відповіді:


25

Цікаве питання, це залежить від використання, на мою думку. Ви все ще захищені з точки зору сеансу зашифрованим, але у вас немає способу сказати, чи представлений вам правильний сервер SSL, якщо ви не поширите кореневий сертифікат CA для користувачів / клієнтів. Для внутрішнього тестування / розробок проектів це буде чудово, ви генеруєте кореневий сертифікат CA, який використовуєте для розповсюдження своїм користувачам (це можна зробити за допомогою групової політики в Windows та через командний рядок openssl в Linux / BSD), а потім використовуєте цей кореневий сертифікат для підписання ваших КСВ. Користувачі не побачать попередження чи нічого, і ви знаєте, що сертифікат підписаний вашим внутрішнім адміністратором.

Для зовнішніх сайтів, на яких ви не можете цього запевнити, я все-таки кажу, що самопідписаний сертифікат краще, ніж взагалі немає SSL, якщо ви надсилаєте паролі або іншу конфіденційну інформацію через з'єднання.

Однак на плюсі ​​є дуже багато дешевих "комерційних" емітентів сертифікатів, GoDaddy - один з них. Ви можете отримати сертифікат приблизно за 40 євро на рік. GoDaddy навіть пропонує безкоштовні сертифікати для веб-сайтів проекту OpenSource.


Це саме те, що ми робимо. Будьте обережні, хоча з дешевими сертифікатами. Деякі з них мають досить незвичайні кореневі сертифікати, і не всі вони знаходяться в колекції кореневих сертифікатів ЦС, які постачаються з усіма браузерами.
wolfgangsz

4
+1, за винятком "самопідписаний сертифікат краще, ніж взагалі немає SSL" - якщо ви підтвердите, що це ваш сертифікат, а не той, який надається MITM. Чесно кажучи, коли останній раз це робив звичайний користувач? (Я підозрюю, що відповідь передбачає блакитний місяць та літаючих свиней) Іншими словами, використовуючи самопідписаний SSL cert, не поширюючи ваші сертифікати CA, ви десенсифікуєте користувачів до страшного попередження, яке вони отримують - вони дізнаються щоб натиснути це, як "добре, вони сказали мені ігнорувати попередження на mysite.example.com, щоб я міг проігнорувати його скрізь; дивіться, значок блокування!" Вуаля, помилкове почуття безпеки!
Пісквор

7
@Piskvor, насправді це вина браузерів. По-перше, браузери, як правило, не пропонують спосіб "приймати назавжди" раніше невідомі самопідписані сертифікати, щоб користувач не наражав на себе небезпеку під час кожного входу. По-друге, браузери не перешкоджають використанню старих звичайних HTTP, також створюючи помилкове відчуття безпеки. Отже, HTTP завжди гірший за HTTPS, як за безпекою, так і за обізнаністю користувачів (принаймні, вони отримують попередження!).
Ротсор

1
@Rotsor: По-перше, Opera має цю функцію, яку ви описуєте вбудованою, FF має сертифікат Patrol (який принаймні попереджає про зміну cert). Зауважте також, що не все на SSL - це браузер (IMAPS тощо). По-друге, як у існуючій кількості HTTP винні лише веб-переглядачі? (і ні, браузери лише для HTTPS ніколи не натрапляли, саме тому, що для їх перегляду була різко менша мережа). По-третє, "вони отримують попередження" було б корисно, якби тільки користувачі читали його - а не сліпо натискали "Прийняти", щоб зникнути. "Клацання прийняття означає розуміння" - це загальна помилка розробників.
Пісквор

1
@Piskvor, добре знати, що деякі браузери надають цю функцію. Щодо HTTP, я не можу сказати, що потрібно робити (заборона HTTP, очевидно, не є варіантом), але мати більше попереджень щодо безпеки із самопідписаним SSL, ніж без SSL взагалі, безумовно, невірно і браузери ' вина!
Ротсор

12

Я збираюся не погоджуватися, раз на вузьких технічних підставах і один раз на загальних підставах.

Вузький технічний підґрунтя полягає в тому, що ОП запитала про самопідписані сертифікати, а кілька інших відповідей стосуються сертифікатів, підписаних приватними органами влади, що є дещо іншим питанням. Але не дуже різні, так що насправді лише примітка мимохідь.

Основне заперечення полягає в тому, що я вважаю, що поки сертифікати, що підписуються на комерційній основі, коштують більше, ніж банальні витрати - а 40 доларів на рік не є тривіальною витратою для багатьох людей на цій планеті - головну роль відіграють самопідписані сертифікати в галузі безпеки в Інтернеті за умови визнання їх обмежень .

Сертифікат, який підписав власноруч, - це як ключ ssh від мого known_hostsфайлу. Без незалежної перевірки це не може мене запевнити, що я розмовляю із системою, що я вважаю, що я є; але це може запевнити мене, що система, з якою я зараз розмовляю, - це та сама система, з якою я говорив минулого разу, я думав, що веду з нею розмову. Ми кешуємо ключі ssh весь час, і я ніколи ще не зустрічався із системним адміністратором, який незалежно підтвердив більш ніж частину відкритих ключів у своєму / її known_hostsфайлі.

Сертифікати з власним підписом (і, з цього приводу, сертифікати, підписані неіснуючими ЦС), набагато краще, ніж взагалі не діють SSL, доки люди розуміють, що, якщо вони не перевіряють їх, вони забезпечують безпеку зв'язку лише для себе, сервера на іншому кінці запису DNS, і будь-який чоловік, що знаходиться в середині, на даний момент на лінії. Якщо вони незалежно перевіряють сертифікат, то автентифікація та шифрування є щонайменше настільки ж сильними, як це передбачено сертифікатом, підписаним визнаним CA.

Крім того, тих , хто хоче представити використання сертифікатів , підписаних визнаний CA як одно-і тільки панацея безпеки Інтернет , можливо , доведеться серйозно подумати про такі питання, як включення CA підписання китайського уряду в стандартній Mozilla пачці , і шахрайські сертифікати SSL, підписані Comodo .


На жаль, модель "довіреної організації CA" справді зламана (і вже роками); на жаль, він не проходить (і насправді немає нічого кращого замінити). Як завжди, SSL та довірені ЦС не є магічною пилом безпеки pixie; користувачеві потрібно активно підтримувати захист - що, здебільшого, досить шалене припущення.
Пісквор

2
Чи ваші користувачі здатні зробити освіту оцінювати рівень їхньої впевненості в цілісності свого шляху до поточного сервера DNS (включаючи можливість отруєння кешем) та пристрою, на який вони потрапляють? Шахта не знаю, що таке DNS, тим більше не в змозі приймати освічені рішення щодо безпеки щодо їх підключення до сервера в іншому стані, підключеного до іншого сайту через MPLS, який підключається до користувача через VPN клієнта, який вони через незашифрований wifi. Уникайте відповідальності за них.
Шейн Мадден

2
@Shane Madden: Однією з областей, де це можливо, є веб-фронти адміністрації - наприклад, phpMyAdmin (або, меншою мірою, SVN через HTTPS). Зазвичай обмежена кількість користувачів, і вони містять якусь значну частку підказки . Я б не сподівався, що мій прадід зробить голови чи хвостики попередження про сертифікат SSL, але я безумовно сподіваюся, що це стосується системного адміністратора, особливо якщо це сервер під контролем hir. Користувач садових сортів також не має поняття про known_hostsте, на що посилається @MadHatter.
Пісквор

8

Для зовнішніх сайтів, на яких у користувачів не встановлено сертифікат CA (що найчастіший випадок), так, сертифікат, який підписує власний підпис, дає помилкове відчуття безпеки , і, отже, це гірше, ніж марно:

  • По-перше, без попередньо встановленого сертифіката CA, як користувач перевіряє, що сертифікат дійсно походить від вас, а не від зловмисника? Порівнюючи поля сертифікатів (CN, відбитки пальців тощо), звичайно - але проти чого? Отже, зараз вам потрібен бічний канал для підтвердження сертифіката - і в кількох випадках я бачив, що оператори лінії підтримки (які повинні були виконувати функцію бічного каналу для перевірки) не мають поняття, що це повинно означати; Крім того, керування таким бічним каналом на порядок дорожче, ніж отримання сертифіката, підписаного довіреною CA, тому користувач повинен сліпо вам довіряти.

  • По-друге, страхітливе сповіщення, яке отримує користувач, є страшним з поважної причини: оскільки користувач не може / не перевірить представлений сертифікат, вони можуть надійно передавати дані в Elbonian Haxx0r D00dz.

  • По-третє, і найгірше, що ти десенсибілізуєш користувачів : "ну, вони сказали мені, що я повинен ігнорувати це попередження на https://mysite.example.com/ , і коваля не впала на мою голову, і мою золота рибка теж не загинула; sooooo, це означає, що це просто ще одне поле попередження без будь-якого фактичного значення, тому я можу ігнорувати цю скриньку кожного разу, коли стикаюся з нею - я все одно отримую цей гарний значок блокування, і це важливо ".

Іншими словами, рівень захисту порівнянний із звичайним HTTP (за винятком прямого нюху: хоча дані шифруються під час транзиту, це досить анемічна особливість без перевірки кінцевої точки), але відчуття захисту невиправдано високе . Погана аналогія автомобіля: "У мене є ABS, тому тепер я можу їхати безпечніше в поганих умовах" - за винятком АБС, існує лише в брошурі з продажу автомобіля, фактично не присутній в машині.

Пропоноване читання: найкращі практики OWASP SSL

TL; DR: Використовуючи самопідписані сертифікати на публічно відкритих сайтах, ви робите Мережу гіршим місцем, одним неосвіченим користувачем одночасно.


2
@downvoter: Буду вдячний, якщо ви вказали, де моя відповідь фактично невірна ("неправильна" на відміну від "незручна, незручна і набридла реалізувати"). Безпека важка, і перехід "la la la я не чую тебе" не робить нічого для її виправлення.
Пісквор

2
Незважаючи на те, що я не порушив вашу відповідь, текст підказки на стрілці вниз вказує на те, що відповідь не є корисною, окрім як відповідь не корисна. Я думаю, що помилкове почуття маятника безпеки може також хитнутись і в інший бік. Нещодавні порушення Comodo RA підтверджують, що "лиходієві" не все так складно придбати і цілком законний сертифікат.
mahnsc

@mahnsc: Дякую за нагадування; Мені відомо про це :-) "Чи є сертифікат SSL, який підписує себе, помилкове почуття безпеки?" "Так, з наступних причин ..." звучить корисно, ні? Отже, мені було цікаво, чому це не буде так: я міг щось навчитися з протилежного погляду; з низового походу, не дуже.
Пісквор

1
@mahnsc: Хороший момент щодо компрометованих ЦП. Я не кажу, що кореневий список CA встановлений в камені та незмінний - ідеальна безпека не існує; але для її вирішення потрібно значно більше зусиль , ніж налаштування захоплюючого SSL-проксі на мережевому шлюзі.
Пісквор

1
@mahnsc: Я мав на увазі, що простіше налаштувати проксі-сервер і сподіваюся, що користувач натискає попередження, ніж налаштовувати проксі-сервер SSL і сподіваюся, що помилковий запит сертифіката проходить через процес перевірки CA. Як це ми бачили, це можливо, але це зробити набагато простіше (а потім виявити складніше, оскільки користувачі браузерів зазвичай не ведуть аудиторські записи).
Пісквор

8

Залежить. Якщо ви думаєте, що це робить вас більш захищеними, то це збільшує ризик, коли ви вирішите робити більш ризиковані речі зі своїм помилковим почуттям безпеки. Якщо ви ставитесь до нього функціонально еквівалентно HTTP, то я б сказав, що ви трохи захищеніші.

Без SSL / HTTPS кожен, хто має провідну мережу у вашій мережі (або локальну мережу будь-кого, хто входить у систему), може тривіально прослуховувати та захоплювати ім’я користувача / паролі, надіслані як звичайний текст.

За допомогою самопідписаного SSL вони не можуть просто слухати, але тепер повинні підробити ваш сайт, потенційно змінити DNS, щоб зробити людину посередньою (MITM) атакою. Це все ще є загрозою, але значно важче їх здійснити.

Інша проблема використання самопідписаного SSL полягає в тому, що багато браузерів розглядають самопідписані сертифікати як основну загрозу безпеці та попереджають вас перед входом (наприклад, хром) на гігантську червону сторінку. http://www.sslshopper.com/article-ssl-certificate-in-google-chrome.html Це може стати великою незручністю.

Отже, підсумок полягає в тому, що якщо ви запускаєте щось, що не повинно бути особливо захищеним (наприклад, відсутні дані кредитної картки, немає соціального страхування) і не можете дозволити собі відповідний сертифікат, сертифікат, який підписався самостійно, може мати певний сенс (скажімо, не дозволяйте іншим користувачам мережі легко нюхати інформацію про вхід).


0

Це залежить від того, що ви маєте на увазі під "безпекою", і яка міра.

Наприклад, у вашому браузері є набір CA, прийнятий за замовчуванням. Це означає, що будь-який сертифікат, виданий цим CA, приймається вашим браузером (поки він не збігається з іменем dns). Тепер, уявіть, якийсь злий уряд є власником ЦА, або може змусити ЦА видавати сертифікат для відвідуваного вами сайту. Тоді зробити MITM дуже просто: вони можуть проксі підключити ваше з'єднання, відправивши у ваш браузер сертифікат, який вони мають, і ваш браузер прийме його, оскільки він походить від "довіреного" CA. Поки вони не стануть прозорими для DNS (що є базою для MITM), це нормально.

Отже, "список прийнятих ЦА" є в основному великою діркою в безпеці, поки одна з цих ЦА не співпрацює з деяким злим урядом. Мати власний СА набагато краще.

Звичайно, ви можете це зробити у вашій компанії або на домашньому сервері, оскільки ви можете встановити власний сертифікат CA в клієнт, який ви також контролюєте. На загальнодоступному сервері ви не можете спілкуватися з будь-яким користувачем, попросивши його додати виняток або додати ваш сертифікат.

Отже, це залежить від того, що ви маєте на увазі під "безпекою" та сферою застосування. ЯКЩО ви володієте клієнтами, ЗА Впевненість, самопідписання є більш безпечним, поки ви не встановите на сам клієнт сертифікат власного CA.

Звичайно, ви не можете зробити це на загальнодоступному веб-сайті, оскільки у вас немає всіх клієнтів. Так ви отримаєте небезпеку різної поведінки, що не є безпечним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.