Это не вопрос кодирования / программирования как таковой, но я полагаю, что этот ответ может быть в равной степени верным при написании программного обеспечения, поэтому я все равно опубликую его.
Доверять самозаверяющим сертификатам по умолчанию в используемой вами компьютерной системе или программном обеспечении, которое вы пишете, — ужасная идея. Если вы примете все сертификаты, это сделает атаку человека посередине тривиальной. Все, что нужно сделать злоумышленнику, — это предоставить вам самозаверяющий сертификат, а также расшифровать и повторно зашифровать трафик.
Обычно для таких ситуаций вам нужно создать свой собственный центр сертификации, подписать с его помощью свои сертификаты и добавить его в /etc/ca-certificates.conf
или что-то еще, что использует Red Hat.
Если бы вы писали собственное программное обеспечение, я бы также отслеживал старые сертификаты, предоставленные данным хостом, чтобы меня предупреждали, если они изменились, потому что я сомневаюсь, что полностью доверять глобальным центрам сертификации разумно.
Я бы сказал, что это лучшая практика:
- Для ваших собственных услуг или для чего-либо, что должно означать, что услуги предоставляются данным лицом, которому вы доверяете, создайте ЦС и используйте его для сертификатов.
- Во всех остальных случаях установите безопасное соединение, сохранив токен безопасности (отпечаток сертификата SSL, отпечаток SSH/GPG и т. д.), и будьте осторожны, если он изменился. Если вы параноик, при первом использовании убедитесь, что отпечаток пальца в порядке, подключившись из разных мест или используя его в течение нескольких дней или по другому каналу (не очень важно, потому что вероятность MITM во время первого подключения очень низкая). вероятность - но все же не пренебрежимо мала).
person
Rosh Oxymoron
schedule
23.12.2010