Этот туториал показывает как сгенерировать CSR для FileZilla Server. Начнем с той части, которая экономит больше всего времени: FileZilla Server не умеет создавать запрос на подпись сертификата. Нигде в административном интерфейсе, ни в одной версии, для этого нет кнопки. Сервер может сгенерировать самоподписанный сертификат, автоматически получить его от Let’s Encrypt или загрузить сертификат и закрытый ключ, которые вы предоставите сами — и именно в этот третий вариант попадает сертификат от коммерческого центра сертификации. Поэтому запрос формируется вне FileZilla Server, с помощью OpenSSL или онлайн-генератора, и серверу передаются только готовый ключ и сертификат.
Одно замечание о версиях перед командами, поскольку оно определяет, какой терминал вы откроете. FileZilla Server был переписан для версии 1.0 в сентябре 2021 года, и текущий релиз — 1.12.6, опубликованный в мае 2026 года. Пакеты для Debian и macOS появились вместе с версией 1.2.0 в декабре 2021 года; до этого сервер работал только на Windows, и Windows по-прежнему является платформой для большинства установок. Старые инструкции, начинающиеся с «войдите по SSH», молчаливо предполагают хост на Linux. Устаревшая линейка 0.9.x завершилась выпуском 0.9.60.2 в феврале 2017 года и с тех пор не получала обновлений безопасности, поэтому если вы всё ещё используете её, планируйте обновление вместе с получением сертификата.
Что FileZilla Server делает с сертификатами
Стоит сначала увидеть конечную точку, прежде чем формировать запрос, поскольку это подскажет, в каком виде должны быть файлы. Откройте административный интерфейс FileZilla Server, подключитесь к серверу, затем выберите Server и Configure… в строке меню (сочетание клавиш — Ctrl+F). В дереве слева откройте Protocols settings, затем FTP and FTP over TLS (FTPS), затем вкладку Connection Security.
На этой странице находятся две вещи: меню Minimum allowed TLS version с вариантами v1.2 и v1.3, и селектор TLS credentials с тремя вариантами, и больше ничем:
- Provide a X.509 certificate and private key. Два поля, Certificate и Private key, каждое из которых принимает либо необработанные данные PEM, вставленные прямо в интерфейс, либо путь к файлу в файловой системе сервера. Поле ключа дополнительно принимает URL PKCS#11, если ключ хранится на аппаратном токене. Ниже расположено поле Private key password (stored in plaintext). Именно сюда попадает сертификат, выданный CA.
- Use a self-signed X.509 certificate. Кнопка Generate new, которая создает сертификат, подписанный самим сервером. Полезно для закрытого теста, но ему не доверяет ни один клиент, поэтому каждое соединение выдает предупреждение.
- Use a Let’s Encrypt® certificate. Встроенная поддержка ACME, добавленная в FileZilla Server 1.0. Сервер сам запрашивает и продлевает сертификат, и вам не нужно возиться с CSR.
Ни один из этих трех вариантов не создает запрос на подпись сертификата, который можно отправить в центр сертификации. FileZilla Server действительно создает его внутренне как часть обмена с Let’s Encrypt, но он никогда не записывается на диск и не отображается в интерфейсе, и привязан к этому автоматическому заказу.
Две детали с этого экрана стоит взять с собой в следующий раздел. Во-первых, поля с путями разрешаются на машине, где работает движок сервера, а не на машине, где работает административный интерфейс, а это важно, поскольку зачастую это разные компьютеры. Во-вторых, поскольку интерфейс также принимает сертификат и ключ в виде вставленного текста, вам вовсе не обязательно копировать файлы на сервер. В любом случае, закрытый ключ, который вы собираетесь создать, должен так или иначе попасть на эту машину, и генерация его прямо там — самый простой путь.
Сгенерировать CSR для FileZilla Server
Если вы уже сгенерировали CSR, пропустите этот раздел и переходите сразу к установке SSL-сертификата на FileZilla Server после того, как сертификат будет выдан. В противном случае выберите один из двух способов ниже. Оба дают одинаковую пару файлов.
Вариант 1: используйте генератор CSR от SSL Dragon
Наш генератор CSR создает запрос и соответствующий закрытый ключ из одной формы, что позволяет избежать установки OpenSSL на Windows-сервер только ради выполнения одной команды. Сохраните созданный им закрытый ключ и храните его в надежном месте. Сертификат, выданный CA, бесполезен без него, и никто не сможет прислать вам замену.
Вариант 2: сгенерировать CSR с помощью OpenSSL
Где выполнять команду, зависит от операционной системы, на которой размещен FileZilla Server:
- Windows. Откройте Command Prompt или PowerShell. Windows не поставляется с OpenSSL, поэтому его нужно установить: Git for Windows включает сборку, доступную в PATH внутри Git Bash, либо можно установить отдельный пакет OpenSSL для Windows, либо использовать Windows Subsystem for Linux. Что бы вы ни выбрали, сначала выполните
openssl versionи убедитесь, что команда отвечает. - Linux. Откройте терминал на сервере или подключитесь по SSH. OpenSSL установлен по умолчанию в большинстве популярных дистрибутивов.
- macOS. Откройте Terminal. Команда
opensslв macOS на самом деле является сборкой LibreSSL, а не OpenSSL, что важно для пары опций, отмеченных ниже. Каждая команда в этом туториале была протестирована на обеих сборках и работает на обеих.
Перейдите в каталог, который вы сможете легко найти впоследствии, затем выполните одну эту команду. Она создает закрытый ключ и запрос вместе:
openssl req -new -newkey rsa:2048 -nodes -keyout ftp.yourdomain.com.key -out ftp.yourdomain.com.csr -addext "subjectAltName=DNS:ftp.yourdomain.com"
Что делает каждая часть:
req -newсоздает новый запрос на подпись сертификата.-newkey rsa:2048одновременно генерирует новый 2048-битный RSA-ключ. Это минимальный размер ключа, который публичные CA готовы подписывать. Используйтеrsa:4096, если этого требует ваша политика безопасности.-nodesзаписывает закрытый ключ без пароля, чтобы FileZilla Server мог прочитать его без вмешательства после перезагрузки. Используйте именно это написание, а не более новый псевдоним-noenc: OpenSSL 3.x принимает оба варианта, но сборка LibreSSL, поставляемая в macOS какopenssl, отвергает-noencи вместо выполнения выводит справку по использованию.-keyoutи-outзадают имена двух выходных файлов. Называть их по имени хоста лучше, чем server.key и server.csr, потому что через год у вас их будет несколько.-addext "subjectAltName=..."помещает имя хоста в расширение Subject Alternative Name. Не пропускайте это. Базовые требования CA/Browser Forum теперь описывают поле Common Name как нерекомендуемое и требуют, чтобы любое значение в нем происходило из записей SAN, поэтому именно список SAN является авторитетным.
Для нескольких имен хостов или для wildcard расширьте ту же опцию списком через запятую. Повторите Common Name внутри него:
-addext "subjectAltName=DNS:ftp.yourdomain.com,DNS:files.yourdomain.com"
-addext "subjectAltName=DNS:*.yourdomain.com,DNS:yourdomain.com"
Если вы предпочитаете использовать ключ на основе эллиптической кривой, эквивалентная команда приведена ниже. Сначала проверьте, что ваш центр сертификации выпускает сертификаты ECDSA для того продукта, который вы покупаете, поскольку не каждый бренд это делает.
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes -keyout ftp.yourdomain.com.key -out ftp.yourdomain.com.csr -addext "subjectAltName=DNS:ftp.yourdomain.com"
Второй параметр -pkeyopt — не украшение. В OpenSSL он ничего не меняет, потому что именованная кривая уже используется по умолчанию, но в сборке LibreSSL, поставляемой с macOS, его отсутствие приводит к тому, что запрос описывает кривую, выписывая все ее параметры, вместо того чтобы называть её. RFC 5480 запрещает такую форму в публичных сертификатах, а запрос, построенный таким образом, вообще не идентифицирует никакую кривую.
Ответьте на вопросы
Теперь OpenSSL запрашивает данные, которые войдут в запрос, в следующем порядке:
- Country Name (2 letter code): двухбуквенный код вашей страны, например US. Вот полный список кодов стран.
- State or Province Name (full name): полностью, без сокращений. California, а не CA.
- Locality Name (eg, city): полное название города, например San Jose.
- Organization Name (eg, company): точное юридическое название вашей организации, например Example Holding LLC. Если вы покупаете сертификат с проверкой Domain Validation, CA не проверяет и не использует это поле, поэтому его можно оставить пустым.
- Organizational Unit Name (eg, section): оставьте пустым. Начиная с 1 сентября 2022 года базовые требования CA/Browser Forum относят этот атрибут к тем, которые CA не должны включать, поэтому все, что вы введете, будет отброшено.
- Common Name: полное доменное имя хоста, к которому подключаются ваши FTPS-клиенты, например ftp.yourdomain.com, или wildcard *.yourdomain.com. Формулировка этого вопроса немного отличается в разных сборках, но в конфигурации по умолчанию это шестой вопрос.
- Email Address: необязательно, обычно оставляется пустым.
- A challenge password: оставьте пустым. Это устаревший атрибут самого запроса, он никогда не попадает в выданный сертификат, и формы заказа сертификата его не запрашивают.
- An optional company name: также оставьте пустым.
Одна ловушка, о которой стоит знать до того, как вы начнете набирать текст. «Оставить пустым» не означает «нажать Enter». У нескольких полей есть значение по умолчанию из конфигурационного файла OpenSSL, показанное в квадратных скобках в конце подсказки, и нажатие Enter принимает это значение по умолчанию, а не оставляет поле пустым. В стандартной конфигурации OpenSSL нажатие Enter на первых нескольких вопросах давало запрос со значениями C=AU, ST=Some-State и O=Internet Widgits Pty Ltd, а это точно не то, что кто-либо хочет отправить в центр сертификации. Чтобы по-настоящему оставить поле пустым, введите одну точку и нажмите Enter. OpenSSL прямо об этом говорит в преамбуле, которую он выводит непосредственно перед вопросами.
Когда на последний вопрос дан ответ, в текущем каталоге появляются два новых файла:
- ftp.yourdomain.com.csr: запрос на подпись сертификата. Именно его вы вставляете в форму заказа.
- ftp.yourdomain.com.key: закрытый ключ. Он никогда не отправляется в центр сертификации и никогда не покидает вашу зону контроля. Любой, кто им завладеет, сможет выдать себя за ваш сервер, поэтому ограничьте, кто может его читать, и создайте резервную копию в месте, к которому у вас будет доступ и через три года. Потеряете его — и выданный сертификат станет непригодным для использования: придется генерировать новый запрос и запрашивать перевыпуск.
Проверьте CSR перед заказом
Опечатка в запросе означает, что CA выдаст сертификат, которым вы не сможете воспользоваться, а исправление обойдется еще одним раундом проверки. Прочитайте запрос перед отправкой:
openssl req -noout -text -verify -in ftp.yourdomain.com.csr
Проверьте три момента в выводе: строка Subject содержит те данные, которые вы намеревались ввести, раздел Subject Alternative Name перечисляет все имена хостов, которые будут использовать клиенты, и проверка подписи проходит успешно. OpenSSL 3.x сообщает последнее как Certificate request self-signature verify OK, а сборка LibreSSL в macOS сокращает это до verify OK. Оба варианта означают одно и то же. Если вы предпочитаете не работать в командной строке, вставьте запрос в наш декодер CSR.
Стоит также убедиться, что ключ на диске действительно тот, из которого был сформирован этот запрос, особенно если вы генерировали несколько. Сравнение открытых ключей работает для любого типа ключа и в OpenSSL, и в LibreSSL:
openssl req -noout -pubkey -in ftp.yourdomain.com.csr
openssl pkey -pubout -in ftp.yourdomain.com.key
Два блока должны быть идентичны, символ в символ. Это переносимая версия более привычного сравнения по modulus и md5, которое работает только для ключей RSA и сообщает о несовпадении для вполне здоровой пары на эллиптической кривой.
Наконец, откройте файл .csr в обычном текстовом редакторе, таком как Notepad или TextEdit, и скопируйте весь блок, включая первую и последнюю строки:
-----BEGIN CERTIFICATE REQUEST-----
MIICvDCCAaQCAQAwdzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWEx
... (many lines of base64) ...
-----END CERTIFICATE REQUEST-----
Каждая строка-маркер — это ровно пять дефисов, слово, затем еще пять дефисов. Не перепечатывайте их вручную и не вставляйте через текстовый процессор, который может преобразовать последовательности дефисов в тире и создать запрос, который CA отклонит как некорректно сформированный.
Когда CSR вообще не нужен
Начиная с версии 1.0, FileZilla Server может самостоятельно получать и продлевать бесплатный сертификат Let’s Encrypt без создания вами запроса и без импорта каких-либо файлов. В том же диалоге настроек есть страница верхнего уровня Let’s Encrypt®, расположенная в дереве ниже пункта Logging. Отметьте Enable Let’s Encrypt® certificate generation, нажмите Create new account и примите условия использования, затем выберите в разделе How to perform the challenges, должен ли FileZilla Server отвечать на проверки с помощью собственного встроенного веб-сервера (по умолчанию предлагается порт 80) или вы укажете ему папку, которую уже использующийся веб-сервер применяет для ответа на запросы по адресу /.well-known/acme-challenge/. После этого выберите Use a Let’s Encrypt® certificate на вкладке Connection Security и оставьте отмеченным Automatically try to renew the certificate in due time.
Реалистичность этого варианта для вас определяют два ограничения. Сервер отвечает только на HTTP-проверки, поэтому имя хоста должно быть доступно из интернета на порту проверки во время выдачи сертификата и при каждом продлении. И поскольку wildcard-сертификаты от Let’s Encrypt требуют проверки на основе DNS, которую FileZilla Server не выполняет, получить wildcard таким способом невозможно.
Поэтому описанный выше путь с CSR по-прежнему остается тем, к которому стоит прибегнуть, если вам нужен wildcard, сертификат с проверкой организации (Organization Validation) или расширенной проверкой (Extended Validation), либо сертификат для сервера, не доступного из интернета. Наши руководства по ACME подробнее рассматривают автоматическую выдачу сертификатов. Оставшийся вариант, кнопка Generate new под Use a self-signed X.509 certificate, предназначен только для тестирования: она позволяет запустить FTPS за считанные секунды, но заставляет каждый клиент выводить предупреждение, которое пользователи быстро научатся просто пропускать.
Часто задаваемые вопросы
Нет. Административный интерфейс предлагает три способа предоставить серверу сертификат, и ни один из них не создает запрос, который можно отправить в центр сертификации: предоставить уже имеющиеся сертификат и закрытый ключ, сгенерировать самоподписанный сертификат или получить сертификат автоматически от Let’s Encrypt. Сгенерируйте CSR с помощью OpenSSL или нашего генератора CSR, а затем загрузите полученный ключ и выданный сертификат через первый из этих трех вариантов.
Выполните это на машине, на которой размещен FileZilla Server, заменив имя хоста на свое собственное:openssl req -new -newkey rsa:2048 -nodes -keyout ftp.yourdomain.com.key -out ftp.yourdomain.com.csr -addext "subjectAltName=DNS:ftp.yourdomain.com"
Команда записывает запрос и закрытый ключ рядом друг с другом, а затем запрашивает данные вашей организации.
В Command Prompt, PowerShell или Git Bash на самом сервере. В Windows нет встроенного OpenSSL, поэтому сначала установите его: Git for Windows включает подходящую сборку, также существуют отдельные пакеты для Windows. Выполните openssl version, чтобы убедиться, что команда доступна, прежде чем продолжить. Инструкции, предлагающие подключиться по SSH, предполагают хост на Linux, поддержка которого появилась в FileZilla Server только начиная с версии 1.2.0.
Нет. Пакет .pfx или .p12 уже содержит сертификат и его закрытый ключ, поэтому запрашивать нечего. Однако он находится не в том контейнере: поля сертификата и ключа в FileZilla Server документированы как PEM, и поле для вставки помечено как ожидающее PEM. Разделите пакет на два файла PEM, которые запрашивает сервер, введя пароль пакета, когда будет предложено:openssl pkcs12 -in bundle.pfx -nokeys -out certificate.pemopenssl pkcs12 -in bundle.pfx -nocerts -nodes -out privatekey.pem
Оба файла получаются с несколькими строками Bag Attributes над каждым блоком, которые безобидны и могут быть оставлены на месте или удалены.
Нет. Создание запроса лишь записывает два файла на диск и никак не влияет на работу сервера. FileZilla Server не знает о существовании запроса, пока вы не загрузите выданный сертификат, и применяет его через вкладку Connection Security без переустановки.
Сам запрос идентичен, поскольку в любом случае вы создаете его с помощью OpenSSL. Изменилось то, куда попадают готовые файлы. Административный интерфейс 0.9.x располагал настройками сертификата в разделах Edit и Settings, тогда как 1.x использует Server, Configure… и вкладку Connection Security, описанную выше. Последний релиз линейки 0.9.x вышел в феврале 2017 года и не получает обновлений безопасности, поэтому любую работу с ней следует рассматривать как временную.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10


