Pull to refresh

Установка своих SSL-сертификатов на файловое хранилище D-Link DNS-320L

Reading time2 min
Views8.7K
Прикупил я в свое время (еще до кризисных цен) файловое хранилище D-Link 320L, аж за 2 990 рублей (смотря сегодняшние цены хочется просто плакать). И вот недавно захотел я настроить на нем WebDAV нормальный, да с доступом из вне.

Пробросил порт 443 через роутер на файловое хранилище, создал новую шару, поставил крижыки WebDAV. Пытаюсь подключится — с помощью плагинов FAR все ок, а вот через Widnows подключение как сетевой диск не проходит — на сертификаты ругается. Никак не хочет, а ставить сторонние приблуды — нет желания.

Решено: получаем бесплатный SSL сертификат (по-моему на StartSSL я его и получил для своего домена). Скачал файлики, приватный ключ, с довольным лицом полез в админку, чтоб сертификаты то залить — ан нет! Нет там такой возможности! Решено начать ковырять.

Шаги такие:

1) Заливаем прошивку с официального сайта с поддержкой Addons (на сегодня это 1.08b08)
2) Устанавливаем Addons с сайта : OpenSSH, MC, vtCron
3) Находим где там сертификаты и заменяем их.

Подключившись по SSH и выполнив «ps ax» я увидел, что за веб тут отвечает lighttpd, нарыл его конфиг, а в нем и указано, что сертификаты (и публичный и приватный ключ) лежат в одном файле /etc/certificate_https_all.pem. Удалил старый файл, сохранил новый (порядок таков: первым идет публичный ключ, вторым — приватный), перезапустил lighttpd. Все отлично — сертификаты подцепились, но после перезагрузки все исчезло — в /etc все сохраняется только до перезагрузки. Потом все заново. В связи с этим решено было сохранить файл с сертификатами на жестком диске (в моем случае на /mnt/HD_a4/script/cert.pem) и написать скрипт который выполняет подмену файла с сертификатом и перезапускает вебсервер.

#!/bin/sh

if [ ! -e /etc/sslupdate ]; then

    touch /etc/sslupdate
    cp  /mnt/HD_a4/script/cert.pem /etc/certificate_https_all.pem
    ps ax  | grep lightt | grep -v grep | awk '{ system ("kill " $1) }'
    /usr/sbin/lighttpd-angel -D -m /usr/lighty_lib -f /etc/lighttpd/lighttpd.conf &

fi

В качестве семафора выполнялся ли уже скрипт в эту перезагрузку или нет было решено использовать файл /etc/sslupdate. При запуске скрипт проверяет, существует ли семафор? Если он существует — скрипт заканчивает свою работу. Если же семафора нет, то скрипт выполняет действия:

  • Создает семафор о том что он выполнился;
  • Копирует сертификат с жесткого диска в папку /etc;
  • Убивает процессы которые связаны с lighttpd;
  • Запускает lighttpd.

Для того чтобы скрипт запускался, заходим через веб-морду в управление vtCron и прописываем запуск скрипта там один раз в пять минут ( */5 * * * *)

Перезагружаем хранилище, все работает.
Tags:
Hubs:
Total votes 15: ↑12 and ↓3+9
Comments7

Articles