Не доверяете промежуточному CA в Linux?

18

Из этого блога .

Промежуточные ЦС - это сертификаты, подписанные корневым ЦС, который может подписывать произвольные сертификаты для любых веб-сайтов.

Они так же мощны, как корневые ЦС, но нет полного списка тех, кому ваша система доверяет, потому что корневые ЦС могут создавать новые по желанию, и ваша система будет доверять им с первого взгляда. В CT есть ТЫСЯЧИ.

В этом месяце появился интересный документ, созданный, по-видимому, в сентябре 2015 года: «Blue Coat Public Services Intermediate CA», подписанный Symantec. (Никакие сертификаты, подписанные этим CA, не достигли журналов CT или Censys.)

Я подумал, что это будет хороший повод написать, как явно не доверять промежуточному ЦС, который в противном случае был бы доверен OS X. Это не помешает корневому ЦС передать новое промежуточное звено той же организации, но лучше, чем ничего.

Когда я попробовал выполнить шаги в блоге в Ubuntu, я загружаю этот сертификат https://crt.sh/?id=19538258 . Когда я открываю .crt, он импортируется в связку ключей Gnome, но потом я не смог найти способ «не доверять» сертификату после его импорта.

Рафаэль
источник

Ответы:

8

Просто, чтобы усложнить задачу, в Linux имеется несколько библиотек для работы с сертификатами.

Если вы используете Mozilla NSS, вы можете активно Недоверие (их терминология) справка с использованием CertUtil «s -t trustargsварианта:

$ certutil -d <path to directory containing database> -M -t p -n "Blue Coat Public Services Intermediate CA"

Для Firefox, <path to directory containing database>как правило , ~/.mozilla/firefox/<???>.profileгде <???>некоторые случайные выглядящие персонажи. (certutil находится, например, в пакете libnss3-tools для Ubuntu)

Разбивка выглядит следующим образом:

-M изменить базу данных

-t p установить доверие к Запрещено

-n провести операцию по названному сертификату

Даже в NSS не все приложения используют одну и ту же базу данных; поэтому вам, возможно, придется повторить этот процесс. Например, чтобы сделать то же самое для Chrome, измените -d <path>к -d sql:.pki/nssdb/.

$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"

Однако не все приложения используют NSS, поэтому это не полное решение. Например, я не верю, что это возможно сделать с помощью библиотеки OpenSSL.

Как следствие, любое приложение, которое использует OpenSSL для обеспечения своей цепочки сертификатов (TLS, IPSec и т. Д.), Будет доверять цепочке с сертификатом Blue Coat, и вы ничего не можете с этим поделать, кроме удаления корневого ЦС, подписавшего его ваше хранилище доверия (что было бы глупо, учитывая, что это Symantec Root CA, так как в конечном итоге вы не доверяете половине Интернета), тогда как приложения, использующие NSS, можно настроить более детально, чтобы не доверять любой цепочке, имеющей сертификат Blue Coat. ,

Например, я считаю, что OpenVPN использует OpenSSL в качестве библиотеки для сертификатов, поэтому старший брат может прослушивать ваш трафик OpenVPN без вашего ведома, если вы подключаетесь к коммерческому провайдеру VPN, который использует OpenVPN. Если вы действительно обеспокоены этим, то проверьте, кто является корневым центром сертификации вашего коммерческого VPN-провайдера - если это Symantec / Verisign, то, может быть, пришло время отказаться от них для кого-то еще?

Обратите внимание, что SSH не использует сертификаты X509, поэтому вы можете подключаться и туннелировать, используя SSH, не беспокоясь о атаках Blue Coat MITM.

garethTheRed
источник
Я обновил вопрос, чтобы указать, что, когда я дважды щелкнул по сертификату, он был импортирован в набор ключей gnome. Мне удалось найти способ импортировать его в Firefox в моем ответе ниже.
Рафаэль
Для OpenSSL не будет ли просто удаление сертификата таким же, как и недоверие к нему? Он может проверять только те сертификаты, о которых он знает.
Братчли
1
@Bratchley - Что, если подозрительный сертификат был отправлен (как и должно быть) как часть рукопожатия TLS? Ему просто доверяют, если только нет способа (как в случае с Mozilla NSS, Windows & OS-X) настаивать на том, что ему всегда не доверяют.
garethTheRed
@garethTheRed Я мог бы что-то упустить, но если библиотека требует проверки сертификата, не решит ли это проблему с помощью CRL или удаления доверенного корневого центра сертификации? Будь то клиентские или серверные сертификаты, он все равно должен требовать проверки.
Братчли
1
Да. Компания Bluecoat получила сертификат CA от Verisign для использования в устройствах «человек посередине». ОП спрашивает, как не доверять этому сертификату. Так что речь идет о недоверии подчиненному сертификату, который не будет аннулирован вышестоящим центром сертификации (в данном случае Root), когда, как вы говорите, не хотите доверять корню (Verisign).
garethTheRed
0

Я пока не могу комментировать, поэтому я должен прокомментировать здесь, что в Ubuntu Gnome 15.10, когда я использую подход @ garethTheRed, я получаю:

~$ certutil -d ~/.mozilla/firefox/<directory>.default -M -t p -n "Blue Coat Public Services Intermediate CA" 
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_BAD_DATABASE: security library: bad database.

~$ certutil -d sql:.pki/nssdb/ -M -t p -n "Blue Coat Public Services Intermediate CA"
certutil: could not find certificate named "Blue Coat Public Services Intermediate CA": SEC_ERROR_UNRECOGNIZED_OID: Unrecognized Object Identifier.

"Blue Coat Systems, Inc." тоже не работает.

(Это сертификат, который я импортировал: https://crt.sh/?id=19538258 )

Косой
источник
Вы сначала загрузили и импортировали сертификат?
Рафаэль
Да, я импортировал этот файл : crt.sh/?id=19538258 . (Кажется, я могу комментировать сейчас! :)
Diagon
Я думаю, что вы можете комментировать только свой ответ. Я на самом деле еще не пробовал процедуру.
Рафаэль
см. мой ответ ниже
Рафаэль
@raphael - Я попытался отредактировать ниже, чтобы вы знали, что: хотя ссылка выше описывает «-t p» как «запрещено (явно не доверено)», справочная страница Ubuntu 15.10 описывает его как «p-Valid peer». Надеюсь, ты не поступил неправильно.
Диагональ