nextcloud ssl

28 августа 2023 1380 admin

Установка сертификатов SSL Letsencrypt на NextCloud


disclaimer:
Рассматривается вариант установки NextCloud через snap и web-сервер Apache.
Именно так устанавливается NextCloud в Ubuntu Server, если чекнуть галочку в списке доп.программ при установке Ubuntu.


disclaimer 2:
SSL сертификаты выдаются только на домены! На IP нельзя сделать сертификат.
В этой статье предполагается что все необходимые NS-записи уже сделаны.
Т.е. для домена и поддомена subdomain3.subdomain2.ru сделана соответствующая А-запись для домена.
Letsencrypt - проверяет наличие этой записи, иначе будет ошибка.


По умолчанию NextCloud устанавливается для использования по протоколу HTTP, 80 порт.
Чтобы использовать протокол HTTPS надо установить сертификаты SSL.
В примере будут использоваться сертификаты от Letsencrypt.

Есть несколько вариантов установки сертификатов.

1. Установка сертификатов Letsencrypt средствами самого NextCloud.


По идее, это "самый правильный" вариант. Потому что лучше пользоваться средствами и инструментами, что дает сама система.
sudo snap run nextcloud.enable-https lets-encrypt

Дальше мастер установки будет задавать вопросы в интерактивном режиме - какую вводить почту, данные домена и т.д.
В конце должен сформировать сертификаты и автоматом запустить NextCloud по протоколу HTTPS.

Ключевое слово - "должен" ))
Но так как линукс - это какое-то недоразумение, а не операционная система, то..

У меня такой метод выдал ошибку:
find: Failed to restore initial working directory: /home/some-user: Permission denied

Linux он такой..
Беглый гугулеж говорит что это бага со snap.
Разбираться с багами линукса - не наш путь.

Поэтому используем более универсальный вариант:

2. Сгенерировать standalone сертификат.


В таком варианте мы можем получить сертификат и самому ручками подключить сертификат к нужному веб-серверу. Потому что веб-сервер может быть разным: apache, nginx, etc.

И способы подключения сертифов к веб-серверу могут быть разными. Поэтому генерируем standalone сертификат и подключаем ручками:
sudo certbot certonly --standalone --agree-tos --preferred-challenges http -d subdomain3.subdomain2.ru

но тут мы тоже получим ошибку:

Could not bind TCP port 80 because it is already in use by another process on
this system (such as a web server). Please stop the program in question and then
try again.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(R)etry/(C)ancel: c


Потому что по умолчанию NextCloud уже запущен на 80 порту.
А certbot для генерации сертификата от Let’s Crypt нужны 80 и 443 порты.

Есть два варианта:
- либо временно глушим NextCloud вместе апачем
- либо переопределяем порты работы NextCloud (можно временно, можно на постоянку)

Переопределить порт работы апач можно в конфиграционном файле апач - httpd.conf.
Но так как у на софт установлен через snap - воспользуемся его интсрументами:

Как изменить порт работы NextCloud ( установленный через snap)


Переопределяем порты работы NextCloud:
sudo snap set nextcloud ports.http=81
и
sudo snap set nextcloud ports.https=444

и генерируем сертификаты:
sudo certbot certonly --standalone --agree-tos --preferred-challenges http -d subdomain3.subdomain2.ru

Должно появиться следующее сообщение:

certbot certonly --standalone --agree-tos --preferred-challenges http -d subdomain3.subdomain2.ru
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for subdomain3.subdomain2.ru

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/subdomain3.subdomain2.ru/fullchain.pem
Key is saved at: /etc/letsencrypt/live/subdomain3.subdomain2.ru/privkey.pem
This certificate expires on 2023-11-23.
These files will be updated when the certificate renews.

NEXT STEPS:
- The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Дальше снова переопределяем на стандартные порты 80 и 443.
Или оставляем на нестандартных – только надо не забывать дописывать порт в ссылке.

3. И не забывать продлевать сертификаты каждые 3 месяца!


Сертификаты от Let's Encrypt выдаются на 3 месяца (90 дней, если быть точным). Поэтому не забываем обновлять сертификаты.
- можно ручками:
certbot -q renew
Предварительно лучше проверить возможность обновления: certbot renew --dry-run

Иногда обновление может завершиться неудачей. Тогда можно обновиться принудительно:
certbot --force-renewal

- можно в cron добавить задачу:
Через редактор cron добавить задачу:
  sudo crontab -e  
и добавить следующую запись:
  0 0 * * 1 /usr/bin/certbot renew >> /var/log/sslrenew.log  

P.S.

Это не все варианты.
В зависимости от типа установки софта, используемого веб-сервера, доменов и/или поддоменов и т.д. возможны разные варианты установки. Приведенные выше примеры - ОДИН ИЗ ВАРИАНТОВ.
Не думайте, что это единственно возможный сценарий.
  • 2

Другие новости по теме:

Другие новости по теме:

    Добавление комментария

    Имя:
    Пароль:
    Email:
    Код:
    captcha
    Введите код:

    Последнии комментарии
    library initialization failed - unable to allocate file descriptor table - out of memory
    Автор Kali (17.12.2025)
    I think the admin of this website is truly working...
    library initialization failed - unable to allocate file descriptor table - out of memory
    Автор Shantae (17.12.2025)
    Great article, exactly what I wanted to find.

    my we...
    library initialization failed - unable to allocate file descriptor table - out of memory
    Автор Bret (17.12.2025)
    Hello! This post could not be written any better!
    R...
    library initialization failed - unable to allocate file descriptor table - out of memory
    Автор Martina (17.12.2025)
    It's awesome to go to see this site and reading th...
    library initialization failed - unable to allocate file descriptor table - out of memory
    Автор Wilford (16.12.2025)
    This is a really good tip especially to those new ...
    library initialization failed - unable to allocate file descriptor table - out of memory
    Автор Caitlyn (16.12.2025)
    Thanks for one's marvelous posting! I genuinely en...
    library initialization failed - unable to allocate file descriptor table - out of memory
    Автор Jerry (15.12.2025)
    Yes! Finally something about You.

    Here is my websit...
    library initialization failed - unable to allocate file descriptor table - out of memory
    Автор Tesha (15.12.2025)
    Asking questions are really good thing if you are ...
    library initialization failed - unable to allocate file descriptor table - out of memory
    Автор George (15.12.2025)
    Having read this I thought it was really informati...
    library initialization failed - unable to allocate file descriptor table - out of memory
    Автор Humberto (14.12.2025)
    Great blog here! Also your site loads up very fast...
     Популярные
       
    Календарь
    « Декабрь »
    Пн Вт Ср Чт Пт Сб Вс
    1 2 3 4 5 6 7
    8 9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30 31
    Облако тегов
    Яндекс.Метрика