Как пропустить проверку SSL в LibGit2Sharp

Недавно я начал использовать LibGit2Sharp и смог успешно начать использовать его. Однако я столкнулся с одной проблемой, которую не могу решить, связанной с проверкой SSL, очень похожей на эту один. Для одного из моих сценариев мне нужно пропустить проверку SSL.

Я получаю следующее исключение, когда пробую этот сценарий.

пользователь отменил проверку сертификата:

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

RemoteCertificateValidationCallback certificateValidationCallback = (sender, certificate, chain, errors) => { return true; };
ServicePointManager.ServerCertificateValidationCallback = certificateValidationCallback;
GlobalSettings.RegisterSmartSubtransport<MockSmartSubtransport>("https");

Я поместил вышеупомянутый код перед выполнением операции git.

Я вижу, что вызывается пользовательский сертификатValidationCallback. Однако после этого команда git завершается со следующим исключением: «Удаленный сервер вернул ошибку: (401) Несанкционировано».

Любое решение этой проблемы?


person Sachin ChandraMohan    schedule 01.07.2015    source источник


Ответы (2)


Для одного из моих сценариев мне нужно пропустить проверку SSL.

Затем используйте параметр конфигурации http.sslVerify. Если это не сработает, сообщите о проблеме в LibGit2Sharp. Но не пытайтесь использовать свой собственный субтранспорт.

Это не то, что следует делать, не зная точно, что вы делаете. Это не для тривиальных мелочей, таких как сертификаты SSL, это для тех случаев, когда у вас есть собственный полный, существующий стек HTTP, который вы хотите использовать, и вы просто не можете использовать тот, который включен в LibGit2Sharp.

Если вы экспериментируете, думая, что, возможно, использование собственного субтранспорта решит очень простую проблему, то нет. А вытащить тест и попытаться заставить его работать, скорее всего, не удастся. Теперь вы отвечаете за все, например за аутентификацию и обработку SSL.

Вместо этого отключите проверку SSL с помощью параметра конфигурации http.sslVerify.

person Edward Thomson    schedule 01.07.2015
comment
Спасибо Эдуард за ответ. попробую этот вариант. Что я заметил, так это то, что библиотека позволяет установить конфигурацию после клонирования репо один раз следующим образом. В моем случае мне нужно отключить проверку ssl, чтобы клонировать репозиторий для решения этой проблемы. Другой вариант — отключить это глобально. Однако я не видел каких-либо библиотечных методов, позволяющих установить это глобально. Пожалуйста, дайте мне знать, если вы знаете о чем-либо. - person Sachin ChandraMohan; 01.07.2015
comment
@SachinChandraMohan Не благодарите меня, я думаю, что ошибаюсь, и что libgit2sharp не соблюдает этот параметр конфигурации. Я буду исследовать дальше. - person Edward Thomson; 01.07.2015
comment
Вот код для добавления параметра конфигурации в репозиторий, который я пропустил в своих предыдущих комментариях. var localRepo = новый репозиторий (clonedRepoPath)) localRepo.Config.Set (http.sslVerify, false); - person Sachin ChandraMohan; 01.07.2015

Пропуск проверки сертификата TLS в настоящее время не поддерживается. libgit2 раньше учитывал http.sslverify, но это было заменено обратным вызовом, чтобы дать вызывающей стороне информацию о том, к чему они подключаются. Этот обратный вызов позволяет пользователю разрешить продолжение соединения или прервать его. К сожалению, на данный момент он не реализован в libgit2sharp.

И, как говорит Эдвард, замена всего стека HTTP мало что решит, особенно если это поддельный стек с таким именем.

person Carlos Martín Nieto    schedule 01.07.2015
comment
У вас есть ссылка? Или кто-нибудь знает, есть ли обновление? - person Mugen; 16.10.2019