Project

General

Profile

Actions

HTTPS secure access to repository

Для защищенного доступа к репозиторию с использованием протокола HTTPS необходимо произвести несколько дополнительных шагов.
Обычно HTTPS использует механизм сертификатов и ключей, которые выдаются доверенным центром сертификации. В связи с этим
клиент который обращается к HTTPS ресурсу проверяет наличие правильного ключа и корректную информацию центра сертификации (Certificate Authority).

Публичные проекты dev.xdevs.com доступны как по HTTP, так и по HTTPS.
Закрытые проекты dev.xdevs.com доступны только по HTTPS после обязательной аутентификации.

Пример конфигурационного файла .hg/hgrc для незащищенного HTTP доступа к репозиториям dev.xdevs.com:

[web]
push_ssl = false
allow_push = *
name = _Project_name_
description = _Some project description_

[paths]
default = http://dev.xdevs.com/hg/_project_name_

[ui]
username = test_user <email test.user>

[tortoisehg] 
pushafterci = True
authorcolor = True
changeset-expander = True
postpull = update
autoresolve = False

[hooks]
commit.autopush = hg push 

[extensions]
children = 
color = 
graphlog = 
hgk = 
keyword = 
progress =

Пример конфигурационного файла .hg/hgrc для шифрованного HTTPS доступа к репозиториям dev.xdevs.com:

[web]
push_ssl = false
allow_push = *
name = _Project_name_
description = _Some project description_

[paths]
default = https://dev.xdevs.com/hg/_project_name_

[ui]
username = test_user <email test.user>

[tortoisehg] 
pushafterci = True
authorcolor = True
changeset-expander = True
postpull = update
autoresolve = False

[hooks]
commit.autopush = hg push 

[extensions]
children = 
color = 
graphlog = 
hgk = 
keyword = 
progress =

Как видим внешне разница только в обращении через протокол HTTPS в пути репозитория, однако помимо этого необходимо
добавить ключ сервера в настройки среды Mercurial. Поскольку каждый сервер имеет свой уникальный ключ, это используется для
проверки идентификатора сервера с сохраненным ранее ключом, во избежание перехвата информации третьими лицами.
Если ключ не совпадает - связь установлена не будет, и Mercurial выдаст сообщение об ошибке:

abort: error: _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Для добавления ключа HTTPS в системном файле Mercurial.ini необходимо добавить:

[hostfingerprints]
dev.xdevs.com = 1c:27:75:bc:12:e5:50:c0:b8:83:3b:c8:a9:f9:7f:76:27:36:b1:f2

Таким образом клиент при любом запросе HTTPS будет сверять ответ сервера с данным ключем.
Для пользователей использующих графическую оболочку TortoiseHG эту операцию также можно выполнить следующим образом:

1. Загружаем необходимый локальный репозиторий в TortoiseHG Workbench
2. Вызываем меню настройки синхронизации (Synchronise)

3. Выбираем режим проверки ключа , поскольку dev.xdevs.com использует самоподписанный ключ.
4. Выполняем "Query" для получения ключа сервера и сохранения в файле конфигурации Mercurial.ini
5. Указываем верный имя и пароль пользователя (предоставляется индивидуально по запросу)
6. Сохраняем ключ и данные авторизации
7. Сохраняем настройки для данного сервера в основном окне программы.

Готово, доступ по HTTPS с проверкой сервера теперь работает исправно.

Updated by tin about 7 years ago · 4 revisions