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 лет придется переделывать ключи.