|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (83)
просмотр истории страницы{toc:maxLevel=3} |
|
h3. Введение\\ |
{tip}*Время выполнения инструкции*: до 15 минут начальная настройка, 2-3 минуты последующее обновление сертификата{tip} |
|
h2. Введение |
При работе личного кабинета абонента по https, используются автоматически сгенерированные самоподписанные сертификаты. |
... |
Получите нужные файлы у центра сертификации и по scp скопируйте их на сервер, например в директорию /tmp. |
h3. Поддерживаемые сертификаты |
С дополнительной информацией по установке сертификатов можно ознакомиться по ссылке [https://knowledge.digicert.com/home.html] |
|
1. Ru Center |
{warning:title=Warning} Необходимо создавать или заказывать ssl сертификаты без пароля. Иначе при перезапуске web сервера придётся каждый раз вводить пароль. Это создаёт проблемы при обновлении и подобных операциях. {warning} |
|
{color:#000000}2. RapidSSL{color} |
h2. Поддерживаемые сертификаты |
|
h3. Соответствие имён сертификатов от RU CENTER |
h3. RU-CENTER |
|
[https://www.nic.ru] |
|
*Имена файлов могут отличаться. Например при использовании сертификатов от Thawte (в качестве посредника может быть RU CENTER), вы получите набор* |
h4. Заказ сертификата RU-CENTER |
|
* root_cert_sslwebserver.crt \- соответствует *ca_bundle.crt*; |
Если вы хотите заказ свой сертификат для своего домена, то для начала вам нужно сгенерировать запрос на получение сертификата (CSR), подробнее вы можете посмотреть на [сайте Руцентра|http://www.nic.ru/dns/service/ssl/csr.html]. По указанной ссылке доступна инструкция "Генерация CSR для Apache", для генерации запроса нужно выполнить шаги из инструкции. h4. Соответствие имён сертификатов от RU-CENTER *Имена файлов могут отличаться. Например при использовании сертификатов от Thawte (в качестве посредника может быть RU-CENTER), вы получите набор:* * root_cert_sslwebserver.crt \- соответствует *ca_bundle.crt*; |
* domain_name_date.crt - соответствует *ca.crt* в команде ниже; |
* private.key \- обычно \- обычно зашифрован и запаролен, соответствует *ca.key* в команде ниже; |
* domain.name.csr - не нужен. |
h3. Инструкция по установке сертификата |
h3. RapidSSL |
|
1. Внесите изменения в файл: |
[https://www.rapidssl.com] |
|
*/app/asr_cabinet/etc/httpd/conf/httpd.conf* {code:lang=xml}<VirtualHost *:80> Redirect permanent /cabinet/welcome https://<название вашего сайта>/cabinet/welcome </VirtualHost> |
h3. COMODO |
|
[https://ssl.comodo.com] Если Вы используете сертификат от COMODO, вероятно Вам пришлют файл с цепочкой корневых сертификатов, или же несколько таких сертификатов в разных файлах. Если их несколько, просто сохраните их содержимое в едином текстовом файле. В обоих случаях, в httpd.conf вместо переменной SSLCACertificateFile используйте SSLCertificateChainFile, например: {code}#SSLCACertificateFile /etc/pki/tls/certs/ca_bundle.crt SSLCertificateChainFile /etc/pki/tls/certs/CA.ca-bundle{code} На всякий случай: [Документация Comodo по установке SSL-сертификата в Apache|https://support.comodo.com/index.php?/comodo/Knowledgebase/Article/View/637/66/] h3. Let's Encrypt [https://letsencrypt.org] К сожалению, поддержка CentOS 6 в Certbot от Let's Encrypt прекращена, и установить его на биллинг достаточно проблематично. Но Вы можете: * [cоздать сертификат вручную на стороннем сервере|https://certbot.eff.org/docs/using.html#manual] * [или онлайн|https://www.sslforfree.com] и положить вручную на сервер биллинга по инструкции далее. h2. Инструкция по установке сертификата # Настройте порты и включите SSL в конфигурационном файле /app/asr_cabinet/cfg/config По-умолчанию порт 443 занят Codeigniter (старый ЛК), а ssl для Wordpress находится на порту 8443. Необходимо поменять порты местами, включить SSL для Wordpress, после чего перезапустить контейнер чтобы корректно сформировались правила *iptables* #* Измените порт ssl в переменной *app\['wordpress.sslport'\]* на 443 и включите ssl для Wordpress в переменной *app\['wordpress.use_ssl'\]* \\ \\ {code}app['wordpress.sslport']='443' app['wordpress.use_ssl']='1'{code} #* Поменяйте порт Codeigniter на 8443 \\ \\ {code}app['apache.sslport']='8443' app['apache.sslip']='169.254.4.43' {code} #* Перезапустите *asr_cabinet*: \\ \\ {code}/app/asr_cabinet/service restart{code} # Внесите изменения в конфигурационный файл Apache: */app/asr_cabinet/etc/httpd/conf/httpd.conf* #* В настройках *<VirtualHost \*:80>* змените *RewriteCond %\{REQUEST_URI\} ^/cabinet.* на *RewriteCond %\{HTTPS\} off* чтобы HTTPS был включен глобально на сайт, а не только личный кабинет. Замените *RewriteEngine Off* на *RewriteEngine On*, чтобы включить движок редиректов. Должно получиться приблизительно следующее: \\ \\ {code}<VirtualHost *:80> DocumentRoot /var/wordpress/ AddDefaultCharset utf-8 <Directory /var/wordpress> Options Indexes FollowSymLinks AllowOverride All </Directory> #Redirect to https! RewriteEngine On #Check for POST Submission RewriteCond %{REQUEST_METHOD} !^POST$ # Forcing HTTPS RewriteCond %{HTTPS} !=on [OR] RewriteCond %{SERVER_PORT} 80 # Pages to Apply.... RewriteCond %{HTTPS} off RewriteRule .* https://%{SERVER_NAME}:443%{REQUEST_URI} [R=301,L] </VirtualHost>{code} #* В настройках *<VirtualHost \*:443>* укажите правильные пути к сертификатам. Должно получиться приблизительно следующее: \\ \\ |
{code}<VirtualHost *:443> |
DocumentRoot /var/wordpress/ AddDefaultCharset utf-8 <Directory /var/wordpress> Options Indexes FollowSymLinks AllowOverride All </Directory> |
SSLEngine on SSLProtocol all -SSLv2 |
... |
SSLCertificateFile /etc/pki/tls/certs/ca.crt #SSLVerifyClient require |
# Server Private Key: # If the key is not combined with the certificate, use this # directive to point at the key file. Keep in mind that if # you've both a RSA and a DSA private key you can configure # both in parallel (to also allow the use of DSA ciphers, etc.) |
SSLCertificateKeyFile /etc/pki/tls/private/ca.key |
</VirtualHost>{code} |
|
*SSLCACertificateFile* \- путь к промежуточному сертификату *SSLCertificateFile* \- путь к сертификату сайта *SSLCertificateKeyFile* \- путь к файлу ключа сертификата \\ \\ # Скопируйте измененный файл конфигурации: |
{code} |
* *Redirect permanent* \- значение задающее обязательную переадресацию на https версию сайта |
mkdir -p /app/asr_cabinet/cfg/etc/httpd/conf/ cp -p /app/asr_cabinet/etc/httpd/conf/httpd.conf /app/asr_cabinet/cfg/etc/httpd/conf/httpd.conf |
{code} |
* *SSLCACertificateFile* \- путь к промежуточному сертификату |
{warning}После этого изменения в настройках личного кабинета по адресу <ip биллинга>:8081/settings/asr_cabinet/ не будут менять настройки веб-сервера{warning} # Скопируйте сертификаты в директорию сертификатов: |
{code} |
* *SSLCertificateFile* \- путь к сертификату сайту * *SSLCertificateKeyFile* \- путь к файлу ключа сертификата {warning}Внимание\! Если Вы изменяли порт ssl в переменной app['wordpress.sslport']='<номер порта>', то Вам необходимо производить изменения в конфигурации httpd.conf п в разделе <VirtualHost \*:<номер порта>>{warning} 2. Скопируйте измененный файл конфигурации: {code}mkdir -p /app/asr_cabinet/cfg/etc/httpd/conf/ cp -p /app/asr_cabinet/etc/httpd/conf/httpd.conf /app/asr_cabinet/cfg/etc/httpd/conf/httpd.conf{code} 3. Скопируйте сертификаты в директорию сертификатов: {code}mkdir -p/app/asr_cabinet/cfg/etc/pki/tls/certs |
mkdir -p /app/asr_cabinet/cfg/etc/pki/tls/certs |
mkdir -p /app/asr_cabinet/etc/pki/tls/certs cp -p /tmp/ca.crt /app/asr_cabinet/cfg/etc/pki/tls/certs/ca.crt cp -p /tmp/ca_bundle.crt /app/asr_cabinet/cfg/etc/pki/tls/certs/ca_bundle.crt cp -p /tmp/ca.crt /app/asr_cabinet/etc/pki/tls/certs/ca.crt |
cp -p /tmp/ca_bundle.crt /app/asr_cabinet/etc/pki/tls/certs/ca_bundle.crt{code} |
{code} # Скопируйте ключ для сертификата {code} mkdir -p /app/asr_cabinet/etc/pki/tls/private mkdir -p /app/asr_cabinet/cfg/etc/pki/tls/private cp -p /tmp/ca.key /app/asr_cabinet/cfg/etc/pki/tls/private/ca.key cp -p /tmp/ca.key /app/asr_cabinet/etc/pki/tls/private/ca.key {code} # Проверка корректности установки сертификата Для проверки корректности установки сертификата необходимо перезапустить http сервер командой {code}chroot /app/asr_cabinet/ /etc/init.d/httpd restart {code} Если сертификат установлен корректно, то у Вас отобразится следующее: {panel}Останавливается httpd: \[ OK \] Запускается httpd: \[ OK \]{panel} |
|
4. Скопируйте ключ для сертификата {code}# mkdir app/asr_cabinet/etc/pki/tls/private # mkdir app/asr_cabinet/cfg/etc/pki/tls/private # cp \-p /tmp/ca.key app/asr_cabinet/cfg/etc/pki/tls/private/ca.key # cp \-p /tmp/ca.key app/asr_cabinet/etc/pki/tls/private/ca.key{code} |
После того, как сервис *httpd* корректно запустится, необходимо выполнить команду |
|
h4. Проверка корректности установки сертификата |
{code}/app/asr_cabinet/service restart{code} Если в результате перезапуска все сервисы стартовали со статусом \[ OK \], необходимо проверить корректность установки сертификата и переадресации на https при переходе в личный кабинет, например через браузер Firefox. |
|
Для проверки корректности установки сертификата необходимо перезапустить http сервер командой */app/asr_cabinet/etc/init.d/httpd restart.* |
Используя браузер можно увидеть ошибки сертификата: * *неверный сайт* \- вероятно, вы обращаетесь на сайт по ip, а сертификат выдан для домена. В комментарии вы увидите всю нужную информацию; \\ \\ * *недоверенный сертификат* \- вероятно, вы не выгрузили серверный сертификат, либо выгрузили вместо него другой сертификат; \\ \\ * *просроченный сертификат* \- вышел срок действия сертификата, нужно покупать новый. |
|
Если сертификат установлен корректно, то у Вас отобразится следующее: |
h2. Два доменных имени для локального сайта |
|
Иногда для сайта регистрируют два доменных имени. Например в разных зонах example.com и example.org . Для работы обоих доменных имён в личном кабинете нужно настроить виртуальные хосты вэб-сервера. Дополнение к выше приведённой инструкции: |
|
Останавливается httpd: \[ OK \] Запускается httpd: \[ OK \] |
# Откройте конфигурационный файл {code} /app/asr_cabinet/cfg/etc/httpd/conf/httpd.conf {code} # Добавье в секцию имени хостов *Section 3: Virtual Hosts* строчку: {code} NameVirtualHost *:443 {code} Так выглядит конечный результат: {code} NameVirtualHost *:8888 NameVirtualHost *:442 NameVirtualHost *:441 NameVirtualHost *:440 NameVirtualHost *:444 NameVirtualHost *:445 NameVirtualHost *:8443 NameVirtualHost *:443 {code} # Добавьте опцию *ServerName* для первого домена в описание хоста: {code} <VirtualHost *:443> DocumentRoot /var/wordpress/ AddDefaultCharset utf-8 ServerName example.com <Directory /var/wordpress> Options Indexes FollowSymLinks AllowOverride All </Directory> SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCACertificateFile /etc/pki/tls/certs/ca_bundle.crt SSLCertificateFile /etc/pki/tls/certs/ca.crt #SSLVerifyClient require SSLCertificateKeyFile /etc/pki/tls/private/ca.key </VirtualHost> {code} # Продублируйте блок *VirtualHost* с настройкой *ServerName* для второго домена: {code} <VirtualHost *:443> ... ServerName example.com ... </VirtualHost> |
|
В том случае, если при запуске *httpd* отображается сбой, то необходимо проверить лог ошибок, который находится в */app/asr_cabinet/var/log/httpd/error_log.* |
<VirtualHost *:443> ... ServerName example.org ... </VirtualHost> {code} # Проведите настройку сертификата для второго домене example.org как указано в разделе [Инструкция по установке сертификата|Установка SSL-сертификата на локальный сайт#Инструкция по установке сертификата]. {note} Нужно учесть, что имена файлов сертификата для второго домена должны отличаться от первого. {note} То есть, примерно так: {code} <VirtualHost *:443> ... ServerName example.com ... SSLCertificateFile /etc/pki/tls/certs/ca_example_COM.crt SSLCertificateKeyFile /etc/pki/tls/private/ca_example_COM.key SSLCACertificateFile /etc/pki/tls/certs/ca_bundle_COM.crt ... </VirtualHost> |
|
После того, как сервис *httpd* корректно запустится, необходимо выполнить команду |
<VirtualHost *:443> ... ServerName example.org ... SSLCertificateFile /etc/pki/tls/certs/ca_example_ORG.crt SSLCertificateKeyFile /etc/pki/tls/private/ca_example_ORG.key SSLCACertificateFile /etc/pki/tls/certs/ca_bundle_ORG.crt ... </VirtualHost> {code} # Перезапустите контейнер личного кабинета для применения настроек: {code} /app/asr_cabinet/service restart {code} |
|
*/app/asr_cabinet/service restart* |
h2. Проверка срока действия сертификата |
|
Если в результате перезапуска все сервисы стартовали со статусом \[ OK \], необходимо проверить корректность установки сертификата и переадресации на https при переходе в личный кабинет, например через браузер Firefox. |
Вы можете узнать информацию по сертификату программой *openssl*. Этой командой можно узнать срок действия сертификата: |
|
Используя браузер можно увидеть ошибки сертификата: * *неверный сайт* \- вероятно, вы обращаетесь на сайт по ip, а сертификат выдан для домена. В комментарии вы увидите всю нужную информацию; |
{code}openssl x509 -text -noout -in mucert ca.crt | grep -E 'Before|After'{code} |
|
* *недоверенный сертификат* \- вероятно, вы не выгрузили серверный сертификат, либо выгрузили вместо него другой сертификат; |
* *Before* - время начала действия * *After* - время окончания действия |
|
* *просроченный сертификат* \- вышел срок действия сертификата, нужно покупать новый. |
Вы так же можете проверить срок действия с помощью команды: {code} cat /cfg/etc/pki/tls/certs/ca.crt | openssl x509 -noout -enddate {code} |
|
h3. Заказ сертификата RUcenter |
h2. Отладка |
|
Если вы хотите заказ свой сертификат для своего домена, то для начала вам нужно сгенерировать запрос на получение сертификата (CSR), подробнее вы можете посмотреть на [сайте Руцентра.|http://www.nic.ru/dns/service/ssl/csr.html] |
Если при запуске *httpd* отображается сбой, Вы можете попробовать найти причину в логе */app/asr_cabinet/var/log/httpd/error_log.*: по типовым ошибкам и как их решать очень много информации в интернете: как правило, это ошибки синтаксиса в файлах конфигурации (не хватает каких-то символов, лишние символы, "директивы" не на своём месте и тд). |
|
h3. Закрытый ключ не подходит к сертификату |
|
Проверьте соответствие сертификата и его ключа консольными команда. Для этого необходимо вычислить md5 хэш модуля каждого файла. Равенство хэша означает соответствие private key и сертификата |
|
# Зайдите в контейнер: {code}chroot /app/asr_cabinet/{code} # Проверьте контрольную сумму файла сертификата {code}openssl rsa -modulus -noout -in /etc/pki/tls/private/ca.key | openssl md5{code} # Проверьте контрольную сумму закрытого ключа {code}openssl x509 -modulus -noout -in /cfg/etc/pki/tls/certs/ca.crt | openssl md5{code} |
|
Если в выводе будут разные значения: значит, ошибка в этом. |
|
h4. Как исправить |
|
# Положите на сервере правильную пару сертификата и закрытого ключа # Перезапустите веб-сервер: {code}chroot /app/asr_cabinet/ service httpd restart{code} |
|
h3. Сертификат установили, но при открытии сайта всё равно ошибка сертификата. Как проверить, на какой домен выдан сертификат? |
|
Зайдите на сервер по SSH и выполните проверку утилитой curl: {code:title=grep subject <(curl -ssvvkI https://169.254.0.80:443 2>&1)} * subject: CN=10.90.185.127,OU=Fiscal secure web server,O=Carbon_Billing {code} В примере выше сертификат самоподписной, это видно по тексту *CN=10.90.185.127*: CN означает "Common Name", то есть домен для которого сертификат выдан. Тут должен быть Ваш домен. Например, если сайт и ЛК должны быть доступны по адресу *example.com*, вывод команды должен быть примерно следующим: {code} * subject: CN=example.com {code} |
|
h4. Как исправить |
|
# Купите сертификат на Ваш домен или создайте бесплатный с помощью Let's Encrypt (на другом сервере). # Настройте сервер по инструкции выше |
|
h2. Восстановление стандартных настроек |
|
По указанной ссылке доступна инструкция "Генерация CSR для Apache", для генерации запроса нужно выполнить шаги из инструкции. |
# Сохраните конфигурационный файл {code} mv /app/asr_cabinet/cfg/etc/httpd/conf/httpd.conf /root/ {code} # Перезапустите контейнер личного кабинета {code} /app/asr_cabinet/service restart {code} |