Подтвердить что ты не робот

Как избежать ошибки "tlsv1 alert unknown ca" в libmproxy?

В настоящее время используется libmproxy, который, в свою очередь, использует telnetlib, чтобы отправлять запросы на веб-страницы HTTPS. Однако возникает следующая ошибка:

Error: [('SSL routines', 'SSL3_READ_BYTES', 'tlsv1 alert unknown ca')]

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

Я думаю, что возможным, вроде уродливым решением могло бы быть исправление кода, чтобы поймать исключение и проигнорировать его, но я предпочел бы более чистый и более способный способ сделать это.

Каким образом можно избежать/решить эту проблему?

Большое спасибо!

4b9b3361

Ответ 1

Это происходит, когда сертификат proxySG, представленный пользователю, не подписан доверенным ЦС.

У меня тоже была эта ошибка, я исправил ее, нажав CA (тот, который используется для ssl proxy) на фактический браузер, с помощью групповой политики.

Ответ 2

Кажется, вы можете использовать certutil, если у вас есть клиенты Windows.

http://support.microsoft.com/kb/555252

Для клиентов Linux вы можете использовать:

sudo mkdir /etc/share/certificates/extra && cp cacert.crt /user/share/certficates/extra/cacert.crt
sudo dpkg-reconfigure ca-certificates

Для клиентов Mac:

sudo security add-trusted-cert -d -r trustRoot -k \
"/Library/Keychains/System.keychain" \
"/private/tmp/certs/certname.cer"

(получил этот ответ от https://apple.stackexchange.com/info/80623/import-certificates-into-system-keychain-via-the-command-line)

Также, читая веб-страницу libmproxy, кажется, что она может загружать пользовательские сертификаты. Если у вас уже есть внутренний сертификат, который уже доверяет вашим клиентам, вы можете просто генерировать сертификаты оттуда.