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 лет придется переделывать ключи.
ċ
Win32OpenSSL_Light-1_0_1i.7z
(1364k)
Raymond superadmin,
18 сент. 2014 г., 0:07
ċ
Win64OpenSSL_Light-1_0_1i.7z
(1416k)
Raymond superadmin,
18 сент. 2014 г., 0:07