– Ты кто такой???
– Я новый русский.
– А я тогда кто?!


Предисловие

В первой части статьи мы обустраивали ADCs хаб и рассуждали о Direct Connect в целом.

Сегодня нам предстоит научиться использовать такой хаб по прямому назначению. Для этого мы поговорим об особенностях совместимых DC клиентов и подружим их с TLS.

В настройках каждого из них нужно будет обратить внимание на раздел Encryption, он же Security & certificates или Безопасность.

Излишне упоминать, что при использовании активного режима TCP порт для TLS также должен быть проброшен.

AirDC++

Продвинутый наследник легендарного fulDC++, самого первого мода оригинального клиента. Нагляден и адекватен.


Настройки AirDC++ для работы на ADCs хабе

Ключ и сертификат генерируются при первом запуске клиента (или по требованию) и валидны 360 дней.



Заметьте, при соединении клиентов друг с другом TLS может использоваться и на обычном ADC хабе, но, правда, с непредсказуемым результатом (см. предыдущую часть статьи).

А что для клиента есть hub with trusted certificate?

Как показали тесты, даже если скормить хабу настоящий, подписанный центром авторизации сертификат (да хотя бы от Let's Encrypt), для клиента он доверенным не будет.


[S] = Secure, [U] = Untrusted

Критерием доверия к ADCs хабу является совпадение самостоятельно полученного клиентом отпечатка сертификата c явно указанным в адресе хаба.

*** Connecting to adcs://babylon.aab21pro.org:412/?kp=SHA256/1QTHF6U3SDQPQKCTCG3ZYK4LQS322MIXI64GMAX7PXLGKYCYTJOQ…
*** TLS error: Keyprint mismatch
*** The keyprint in the address doesn't match the server certificate, use /allow to proceed with untrusted connection

Трогательно, но бесполезно, поскольку keyprint не будет вечно одним и тем же; а значит, для массового использования он не годится.

Более правильным способом получения заветного [S] является сохранение сертификата хаба в специально предназначенную для этого папку (она обычно совпадает с той, в которой клиент хранит собственные «документы»). Для этого следует обратиться к администратору хаба.

Кто для клиента есть user with trusted certificate?

Если все клиентские сертификаты по умолчанию самоподписанные, а удостоверить валидность нельзя… Загадка!

Что такое direct encrypted private message channels?

DC++, AirDC++ и, внезапно, SharikDC умеют отправлять личные сообщения друг другу по защищённому каналу, минуя хаб. Привет, Телеграм!..

DC++

Оригинальный NMDC/ADC клиент, самый непритязательный. Впрочем, безопасности его разработчики уделяют немало внимания.


Настройки DC++ для работы на ADCs хабе

ApexDC++


Настройки ApexDC++ для работы на ADCs хабе

Не вполне внятно работает с TLS. На момент написания статьи добиться с его помощью соединений только по зашифрованному каналу не представляется возможным — проскакивают обычные (например, с FlylinkDC++).

Так или иначе, это лучший вариант для «горячей» замены напрочь устаревшего StrongDC++.

FlylinkDC++

Самый строгий и самый неадекватный. Да и перевод опций выполнен не вполне корректно.


Настройки FlylinkDC++ для работы на ADCs хабе

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

EiskaltDC++

По всей видимости, этот клиент основан на старом ядре DC++ и, хотя он может присоединиться к ADCs хабу, работа через TLS для него проблематична.


AirDC++ vs. EiskaltDC++

Эпилог

В случае успешной установки соединения с использованием TLS (например, при скачивании файллиста) колонка Cipher или Шифр в окошке передач будет заполнена (в AirDC++ иначе, см. ниже)



Как видите, не без шероховатостей, но TLS в DC имеет место быть и работает; есть и планы по дальнейшей разработке этой темы. Кстати! Десятого февраля сего года в 19:00 CET на офхабе DCNF состоится первая в этом году онлайн-встреча участников DC сообщества; будет публичное обсуждение одной новой идеи… Интересно? Тогда заходите на огонёк!

Комментарии (1)


  1. Delion Автор
    09.02.2019 23:00

    Добавил информацию для удостоверения «подлинности» хаба без явного использования кейпринта.