OpenSSL для шифрации соединения QNAP NAS SSL WebDav

Задача - подключить сетевой дисковый массив QNAP TS-420 через интернет для удаленной работы.

Я решил что наилучшее решение для этого будет использование технологии WebDav по защищенному каналу.

Соответственно в официальной инструкции написано как использовать WebDav без шифрации.

В вики тут и тут написано на английском с некоторыми неточностями. В общем для упрощения я решил сваять данную инструкцию.

Требования начальные: Ваш дисковый массив должен быть доступен через интернет на выделенном IP адресе по портам 80 и 8081. Также желательно открыть доступ к массиву по порту 443. Любые изменения (пробрасывания) стандартных портов на нестандартные (к примеру 34000 или иже с ними), приводит к значительным тормозам при подключении и работе с сетевой папкой.

Для начала надо скачать OpenSSL тут или в аттаче страницы (соответственно нужной разрядности 32 или 64).

Если в работе программы будет валиться ошибка:

WARNING: can't open config file: /usr/local/ssl/openssl.cnf

Unable to load config info from /usr/local/ssl/openssl.cnf

То надо выполнить следующую команду (если программа установлена в папку C:\OpenSSL-Win64):

Set OPENSSL_CONF=C:\OpenSSL-Win64\bin\openssl.cfg

После установки вначале генерируем приватный ключ длиной 2048:

C:\OpenSSL-Win64\bin>openssl genrsa -out priv.key 2048

Loading 'screen' into random state - done

Generating RSA private key, 2048 bit long modulus

......................................................................................+++

..........................................................+++

e is 65537 (0x10001)

Потом делаем сертификат на 10 лет. В процессе будут вопросы для сертификата.

Важно только "Common Name (e.g. server FQDN or YOUR name) []:" Надо вбить там адрес нашего дискового массива.

В моем случае я вбил IP адрес 123.456.789.012

Если подключение будет идти через буквенное имя, наподобие nas.mydomain.net, то его и надо вбивать:

C:\OpenSSL-Win64\bin>openssl req -new -key priv.key -out server.crt -x509 -days 3650

Loading 'screen' into random state - done

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:ru

State or Province Name (full name) [Some-State]:

Locality Name (eg, city) []:

Organization Name (eg, company) [Internet Widgits Pty Ltd]:

Organizational Unit Name (eg, section) []:khb

Common Name (e.g. server FQDN or YOUR name) []:123.456.789.012

Email Address []:

Теперь у нас есть 2 файла: priv.key и server.crt:

Далее надо импортировать сделанный сертификат, чтобы система ему верила. Дважды кликаем на файл server.crt, появляется окно:

Далее надо выбрать куда этот сертификат положить:

Говорим системе, что это у нас сертификат корневого уровня:

Система крайне подозрительна, но мы ей говорим, что все под контролем:

Далее надо зайти на дисковый массив и внести кое-какие изменения в настройки. Все должно быть как на картинке:

Далее идем в общие папки и нажимаем на настройки папки, которую надо расшарить:

Выбираем пользователей и группы, которым будет доступ к папке:

Далее надо добавить наши сертификат и ключ.

Идем в Безопасность.

Открываем параллельно в блокноте наши файлы priv.key и server.crt и копируем соответственно текст из server.crt в верхнее поле а текст из priv.key в нижнее поле. Нажимаем "Загрузить":

Система выдает такое окошко. Показывает, что загружает сертификаты.

После загрузки должна появиться такая надпись:

На дисковом массиве все готово.

Теперь надо настроить рабочую станцию, чтобы комп мог подключаться к дисковому массиву.

На Windows 7 есть проблема. QNAS требует изменения безопасности в реестре компа.

Запускаем regedit и по пути:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WebClient\Parameters

изменяем параметр BasicAuthLevel на значение 2

Также надо изменить параметр FileSizeLimitInBytes на ffffffff иначе большие файлы нельзя будет скачать.

После этого надо или перезагрузить компьютер, или перезагрузить службу webclient.

Останавливаем:

C:\Users\raymond>sc stop webclient

Имя_службы: webclient

Тип : 20 WIN32_SHARE_PROCESS

Состояние : 3 STOP_PENDING

(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)

Код_выхода_Win32 : 0 (0x0)

Код_выхода_службы : 0 (0x0)

Контрольная_точка : 0x0

Ожидание : 0x0

Запускаем:

C:\Users\raymond>sc start webclient

Имя_службы: webclient

Тип : 20 WIN32_SHARE_PROCESS

Состояние : 2 START_PENDING

(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)

Код_выхода_Win32 : 0 (0x0)

Код_выхода_службы : 0 (0x0)

Контрольная_точка : 0x0

Ожидание : 0x7d0

ID_процесса : 376

Флаги :

Готово. Теперь можно попробовать подключиться к нашему дисковому массиву.

Нажимаем правой кнопкой на компьютере и выбираем "Подключить сетевой диск..."

Выбираем букву диска, а в поле папка пишем адрес нашего массива с портом и названием расшаренной папки:

Далее система просит ввести пароль на доступ к папке. Пишем то, что забивали в настройках дискового массива:

Если все удалось, то появится сетевая WebDav папка с шифрацией через SSL.

В общем все готово! Через 10 лет придется переделывать ключи.