nginx ошибка при установке SSL сертифика на VestaCP

· Nginx и Снипеты · 3 мин чтения

VestaCP — это отличный open-source панель управления, которая набирает популярность среди владельцев сайта, так как с помощью нее можно легко управлять сайтами (например, как вы это делаете на хостинге). Особенно ее удобство проявляется когда у вас есть свой сервер и не хочется платить деньги за платную панель управления или делать все настройки через командную строку.

Проблема

Я пытался настроить поддержу HTTP для сайта расположенного на этой панели и столкнулся с ошибкой, «Error code: 4» и потом она превратилась в «Error code: 3». В поисках решения этой проблемы я решил погуглить, но ничего не нашел. Я даже обратился на официальный форум, но не получил ответа.

Вскоре, я решил попробовать погуглить еще и наткнулся на ряд статей. Изначально я не знал, что Let’s Encrypt встроена в панель по умолчанию и вам нужно лишь поставить галочку для домена и сохранить и у вас готов HTTPS для сайта. Но я об этом не знал и установить сертификат вручную. Кстати, не советую делать это автоматически, лучше воспользуйтесь способом, который я буду описывать ниже.

Общая информация

  • Я работал на Ubuntu 14.04 trusty.
  • Версия ПУ VestaCP 0.9.8
  • У меня уже были сгенерированные ключи от Let’s Encrypt.

  • Если у вас ключей еще нет, то читайте «Получение сертификата».
  • Если он  у вас есть, то пропустите «Получение сертификата» и сразу читайте «Вставляем ключи».

Получение сертификата

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

Сначала перемещаемся в директорию tmp. Делаем клон директории, которая поможет установить сертификат в полуавтоматическом режиме. Заходим в папку letsencrypt. Останавливаем nginx и на последней строчке задаем параметры для создания и настройки сертификата.

cd /tmp/ 
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
service nginx stop
./letsencrypt-auto certonly --standalone -d yourdomain.ru -d www.yourdomain.ru

Вместе yourdomain.ru пишите ваш домен (для которого нужен сертификат).

После последней консольной команды, вам нужно прочитать правила, ввести свою почту и всю остальную информацию, которая у вас запросится. И потом запустить nginx.

service nginx start

Вставляем ключи

Далее зайдите в VestaCP панель, в сайты, выберите домен и нажмите на SSL поддержку.

В консоли нужно переместиться в директорию где хранятся ключи, которые нужно ввести в VestaCP панели.

cd /etc/letsencrypt/live/yourdomain.ru/

Всего нам понадобится ключи из трех файлов.

Чтобы получить данные из файла, вам нужно написать например, nano cart.pem.

Чтобы выйти из файла нажмите Ctrl+X, введите Y и нажмите Enter.

  1. В первое поле «SSL сертификат» вводим ключ из cert.pem.
  2. Во второе поле вводим «SSL ключ» из privkey.pem.
  3. И в третье поле вводим ключ из chain.pem.

Ошибка nginx

Если при запуске nginx фейлится и выводится ошибка следующего вида:

Starting nginx: nginxnginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()

То вам нужно обратить внимание на этот комментарий на GitHub.

Перевод комментария и ниже решение под ним.

Я закомментировал 3 IP адреса которые использовали порт 443 в файле «/etc/apache2/ports.conf», перезагрузил apache и nginx, и все заработало.

Я не совсем понимаю почему в файле «ports.conf» были эти записи, но похоже видимо они все равно ничего не делали.

Вам же я советую сделать тоже самое.

  1. nano /etc/apache2/ports.conf
  2. И добавить «#» (без кавычек) перед каждым IP
  3. Сохранить файл.
  4. Перезапускаем nginx и apache2.
sudo service nginx restart && sudo service apache2 restart

Если при перезагрузке nginx и apache не показало ошибок — значит все прошло успешно.

Послесловие

Решение этой проблемы очень простое, но чтобы найти как ее решить было сложно и для этого я потратил не один час. Надеюсь она помогла вам сократить время поиска.