# FAQ по сертификатам

# Как подключить SSL для домена

На странице доменов, в строке нужного домена есть кнопка "Подключить SSL-сертификат", после нажатия на которую в течении получаса будет выписан SSL-сертификат.

Кнопка доступна только в том случае, когда A-запись домена уже привязана, и он отвечает на запрос трекера без HTTPS (В колонке состояния статус - подключен).

Выписка сертификата из интерфейса трекера доступна только для метода установки Approved начиная с версии 2.12 (Обслуживание -> Состояние -> Метод установки)

# Как подключить SSL для домена из командной строки на сервере

Если вы отказались от установки сертификата при первом запуске, то можете установить позже с помощью команды:

cd /root
curl keitaro.io/enable-ssl.sh > run; bash run -D domain.com

Важно! Если не получилось установить сертификат с первого раза - проверьте, привязан ли домен по А-записи к серверу с трекером. Если все записи на месте, запустите установку повторно через несколько часов, или обратитесь в нашу службу поддержки, мы поможем разобраться.

# Установка SSL сразу для нескольких доменов

curl keitaro.io/enable-ssl.sh > run; bash run -D domain.ru,domain2.ru,domain3.ru

Скрипт не будет работать, если сервер не был настроен скриптом автонастройки.

Важно! Если не получилось установить сертификат с первого раза - проверьте, привязан ли домен по А-записи к серверу с трекером. Если все записи на месте, запустите установку повторно через несколько часов, или обратитесь в нашу службу поддержки, мы поможем разобраться.

# Как настроить автоматический редирект с http на https?

В файл /etc/nginx/conf.d/local/keitaro/server.inc добавьте строки

set $need_redirect "";
if ($http_x_forwarded_proto != 'https') { set $need_redirect "yes"; }
if ($scheme = 'http') { set $need_redirect "${need_redirect}-yes"; }
if ($server_name ~ '[a-z]') { set $need_redirect "${need_redirect}-yes"; }
if ($need_redirect = "yes-yes-yes") { return 301 https://$server_name$request_uri; }

Это можно сделать, выполнив команду

cat >> /etc/nginx/conf.d/local/keitaro/server.inc <<'END'
set $need_redirect "";
if ($http_x_forwarded_proto != 'https') { set $need_redirect "yes"; }
if ($scheme = 'http') { set $need_redirect "${need_redirect}-yes"; }
if ($server_name ~ '[a-z]') { set $need_redirect "${need_redirect}-yes"; }
if ($need_redirect = "yes-yes-yes") { return 301 https://$server_name$request_uri; }
END

Если файла не существует (при выполнении вышеуказанной команды выдаётся ошибка «bash: /etc/nginx/conf.d/local/keitaro/server.inc: No such file or directory»), значит вам следует сначала обновить конфигурацию сервера.

Важно! После каждого внесенного изменения нужно проверять конфиг командой:

nginx -t

и только потом делать перезагрузку nginx:

service nginx restart

# Как подключить SSL для домена, настроенного через CloudFlare?

Когда домен настроен на CloudFlare, то SSL настраивается на самом CloudFlare. У домена нужно включать поддержку SSL на самом CloudFlare, настройки сертификата - Flexible.

# Ошибка "Во время выпуска сертификата произошла неизвестная ошибка."

Выполните:

curl -fsSL https://dl.eff.org/certbot-auto > certbot-auto 
chmod a+x ./certbot-auto
./certbot-auto --install-only
mv -f certbot-auto /usr/bin/certbot

Когда спросит Is this ok [y/d/N]: , введите «y». Теперь попробуйте снова выписать сертификат.

# Сертификат выписывается, но в браузере показывает, что невалидный

Если уже подключено больше 100 доменов, необходимо удалить старые, неиспользуемые. Перечислите домены для удаления в первой строке и выполните:

curl -sSL https://dl.eff.org/certbot-auto > certbot-auto
chmod a+x ./certbot-auto
./certbot-auto --install-only
mv certbot-auto /usr/bin/certbot-2

# Удаление SSL сертификата указанного домена

В том случае, если Вам потребуется убрать SSL сертификат с домена Вашего сайта, можете воспользоваться нашим скриптом удаления сертификата. Скрипт принимает доменное имя в качестве параметра. Сертификат SSL Вы можете удалить следующей командой:

curl https://raw.githubusercontent.com/apliteni/centos_provision/current/scripts/delete-ssl.sh > delete-ssl; bash delete-ssl domain.com

Где domain.com - это имя Вашего домена, у которого хотите отозвать и удалить сертификат. Будет произведено удаление сертификатов и их файлов, ключей шифрования сертификата указанного домена, а также файлов конфигурации данных сайтов в nginx (расположенных по пути /etc/nginx/conf.d/).

# Проверка корневого сертификата из цепочки ключа на валидность

Бывают случаи, когда SSL сертификат успешно выписывается на имя припаркованного домена, но при этом домен отказывается открываться через https, а проверка валидности SSL сертификата выдает ошибку certificate name mis match. Данная ошибка говорит о том, что имя домена, на который был выпущен SSL сертификат, имеет конфликт в имени с цепочкой сертификатов ранее установленного сертификата (купленный сертификат, либо же иной сертификат который поставлялся бесплатно с доменом и требовал ручной установки).

Характерным признаком такой ошибки будет то, что при проверке сертификата - он будет ссылаться на имя домена, корневой сертификат которого ранее был установлен на сервере (это мог быть платный сертификат который устанавливается вручную или генерируется по цепочке ключей например). В таком случае необходимо удалить абсолютно все ключи этого корневого сертификата (который был установлен вручную). Сделать это Вы можете командой удаления сертификатов, проверить же на какое имя ссылается ключ из цепочки сертификатов Вы можете командой

openssl verify -verbose -x509_strict -CAfile имя_файла_ключа.pem

После чего Вы получите следующий результат:

имя_файла_ключа.pem: CN = problemcertificate.ru
error 20 at 0 depth lookup:unable to get local issuer certificate

Данная ошибка говорит о том, что не получилось проверить SSL сертификат у домена локально у выпускающего сертификата. В таком случае необходимо удалить данные ключи сертификата и конфигурационные файлы nginx этого домена, после чего удалить и выпустить все домены.