proftpd: Несколько сертификатов на основе VirtualHost

Я пытаюсь настроить следующую среду:

Есть один единственный FTP-сервер (Debian 9, proftpd 1.3.6-4), доступный через 1.2.3.4 . Два домена, которые указывают на этот IP-адрес

  • example1.com -> 1.2.3.4
  • example2.com -> 1.2.3.4

Каждый из этих доменов имеет свой собственный сертификат.

Как я могу обслуживать оба сертификата с помощью proftpd?

Согласно этому ( ProFTPd: Multiple Domain VirtualHosts на одном IP-адресе ) это должно быть возможно.

Итак, моя конфигурация будет выглядеть так:

<VirtualHost example1.com>
    TLSEngine                               on
    TLSLog                                  /var/log/proftpd/tls.log
    TLSProtocol                             SSLv23
    TLSOptions                              NoCertRequest EnableDiags NoSessionReuseRequired
    TLSVerifyClient                         off
    TLSRSACertificateFile                   /etc/apache2/ssl/cert-example1.com.pem
    TLSRSACertificateKeyFile                /etc/apache2/ssl/privkey-example1.com.pem
</VirtualHost>

<VirtualHost example2.com>
    TLSEngine                               on
    TLSLog                                  /var/log/proftpd/tls.log
    TLSProtocol                             SSLv23
    TLSOptions                              NoCertRequest EnableDiags NoSessionReuseRequired
    TLSVerifyClient                         off
    TLSRSACertificateFile                   /etc/apache2/ssl/cert-example2.com.pem
    TLSRSACertificateKeyFile                /etc/apache2/ssl/privkey-example2.com.pem
</VirtualHost>

К сожалению, ни одна из них не работает. Он работает только для одного домена, если я помещаю в него IP-адрес вместо имени DNS.

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

1
задан 29 May 2019 в 08:39
1 ответ

Для Windows: попробуйте WinSCP, он поддерживает эту функцию некоторое время.

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


Изменить: включить некоторые объяснения, почему эта функция зависит от поддержки клиента, поскольку запрошено @RalfFriedl:

Чтобы сервер мог доставлять клиенту разные SSL-сертификаты в зависимости от имени хоста, ожидаемого клиентом, ему необходимо знать, какое имя хоста ожидает клиент.
Само соединение TCP / IP, которое поступает на сервер, не включает эту информацию (оно работает только с числовыми IP-адресами и номерами портов TCP).
Поэтому, если для одного и того же адреса и порта сервер хочет отправлять разные сертификаты в зависимости от того, что ожидает клиент, клиент должен предоставить информацию.

В случае виртуальных хостов FTP (E) S на основе имен,клиент отправляет команду HOST с ожидаемым именем хоста в качестве параметра, прежде чем он инициирует согласование SSL, чтобы сервер мог узнать, с каким именем хоста клиент хочет поговорить, прежде чем инициировать продвижение соединения к SSL, во время которого сертификат отправляется клиент.
(Этот механизм, конечно, также можно использовать без SSL только для того, чтобы сервер доставлял различный контент или что-то подобное на основе имени целевого хоста. Я не знаю, делает ли это ProFTPd, и это не вопрос.)

1
ответ дан 3 December 2019 в 23:04

Теги

Похожие вопросы