Я пытаюсь получить доступ к BitBucket с работы.Единственный доступ к Интернету - через HTTP-прокси-сервер аутентификации, который проксирует http на порту 8080 и SSL на порту 8070. Этот прокси-сервер проводит атаку «человек посередине» на SSL-соединения, браузеры могут создавать HTTPS-соединения с Интернетом.только из-за установки поддельного сертификата Websense на всех клиентах.
Я могу подключиться к BitBucket с помощью Git, но не с помощью Mercurial.Я использую Mercurial версии 2.0.2.
С Git я использую следующую конфигурацию в .gitconfig
[user]
name = Firstname Lastname
email = firstname_lastname@domain.co.uk
[http]
proxy = http://name:password@nnn.nnn.nnn.nnn:8080
и могу клонировать репозиторий с помощью следующей команды
D:\MercurialTesting>git clone http://Firstname_Lastname@bitbucket.org/Firstname_Lastname/bb102repo.git test1
Cloning into 'test1'...
Password for 'bitbucket.org':
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
D:\MercurialTesting>
С добавлением этого параметра конфигурации
[http]
sslverify = false
Я также могу клонировать репозиторий через https url https://Firstname_Lastname@bitbucket.org/Firstname_Lastname/bb102repo.git
Используя Mercurial, хотя это уже другая история.Используя следующую конфигурацию в mercurial.ini
[http_proxy]
host = nnn.nnn.nnn.nnn:8080
user = firstname_lastname@domain.co.uk
passwd = password
Mercurial без проблем получит доступ к моему собственному серверу Mercurial дома.
D:\MercurialTesting>hg --debug clone http://nnn.nnn.nnn.nnn/hg/Workspaces/Test1
using http://nnn.nnn.nnn.nnn/hg/Workspaces/Test1
proxying through http://nnn.nnn.nnn.nnn:8080
sending capabilities command
http authorization required
realm: Mercurial Repositories
user: username
password:
http auth: user username, password *******
destination directory: Test1
query 1; heads
sending batch command
http auth: user username, password *******
requesting all changes
sending getbundle command
http auth: user username, password *******
adding changesets
changesets: 1 chunks
add changeset 711ff2c6f5b2
changesets: 2 chunks
add changeset 9034b963b4c1
. . .
Используя точно такую же конфигурацию и пытаясь получить доступ к BitBucket через Mercurialпросто зависает.
D:\MercurialTesting>hg --debug clone http://bitbucket.org/Firstname_Lastname/bb101repo
using http://bitbucket.org/Firstname_Lastname/bb101repo
proxying through http://nnn.nnn.nnn.nnn:8080
sending capabilities command
abort: error: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
D:\MercurialTesting>
При использовании той же конфигурации с SSL через URL https://bitbucket.org/Firstname_Lastname/bb101repo Mercurial зависает точно так же.Во время этого процесса Wireshark вообще не обнаруживает сетевой активности.
Изменение настроек в Mercurial.ini для соответствия порту, через который прокси-сервер обслуживает SSL, не имеет никакого эффекта.Установка переменной среды http_proxy не имеет значения, но установка переменной среды https_proxy полностью меняет вывод.Установка https_proxy и добавление --insecure к вызову команды hg приводит к:
D:\MercurialTesting>hg --debug clone http://bitbucket.org/Firstname_Lastname/bb101repo --insecure
using http://bitbucket.org/Firstname_Lastname/bb101repo
proxying through http://nnn.nnn.nnn.nnn:8080
sending capabilities command
warning: bitbucket.org certificate with fingerprint 79:ce:0d:30:b0:17:29:6a:d1:9f:dd:d3:62:80:70:28:5e:9f:c2:e3 not verified (check hostfingerprints or web.cacerts config setting)
http authorization required
realm: Bitbucket.org HTTP
user: Firstname_Lastname
password:
http auth: user Firstname_Lastname, password ***
warning: bitbucket.org certificate with fingerprint 79:ce:0d:30:b0:17:29:6a:d1:9f:dd:d3:62:80:70:28:5e:9f:c2:e3 not verified (check hostfingerprints or web.cacerts config setting)
abort: HTTP Error 502: Success
D:\MercurialTesting>
И теперь Wireshark обнаруживает обмен между моей рабочей станцией и прокси-сервером.Что меня больше всего смущает, так это то, что это не имеет ни малейшего значения что Я установил https_proxy, hg всегда использует настройку http-прокси из Mercurial.ini и выдает один и тот же вывод выше, независимо от того, установил ли яhttps_proxy для правильных деталей для SSL-прокси или для завершения мусора.Единственное отличие состоит в том, что если переменная окружения https_proxy вообще не установлена, то hg просто зависает, как описано выше.
Форматы для https_proxy, которые я пробовал, включают все варианты:
https_proxy=ip.ip.ip.ip:8070
https_proxy=ip.ip.ip.ip:8080
https_proxy=username:password@ip.ip.ip.ip:8070
https_proxy=username:password@ip.ip.ip.ip:8080
https_proxy=http://ip.ip.ip.ip:8070
https_proxy=http://ip.ip.ip.ip:8080
https_proxy=http://username:password@ip.ip.ip.ip:8070
https_proxy=http://username:password@ip.ip.ip.ip:8080
Результаты одинаковы, независимо от того, что я установил.
Итак, вопросы, с которыми я мог бы действительно помочь:
Почему я могу получить доступ к своим репозиториям Mercurial дома, ноне в BitBucket?
Почему я могу получить доступ к BitBucket с помощью Git, но не с Mercurial, используя ту же конфигурацию?
У кого-нибудь есть идеи, как заставить это работать или что я могуследующий тест?