... {toc:maxLevel=3} h2. Введение При работе личного кабинета абонента по https, используются автоматически сгенерированные самоподписанные сертификаты. При этом, как правило, абонент получает в браузере предупреждение об использовании сайтом недоверенного сертификата. Чтобы решить эту проблему, можно приобрести сертификат на используемое вами для локального сайта (обычно, доступного из внешней сети) доменное имя у авторизованного центра сертификации и установить его на сервер. Сертификационные центры чаще всего используют трехуровневую схему подписей, Для подписывания сайта понадобится публичный сертификат для вашего сайта с встроенным в него публичным ключем, секретный ключ от вашего сертификата и, дополнительно, сертификат промежуточного центра сертификации. Сертификаты должны быть в формате PEM. Получите нужные файлы у центра сертификации и по scp скопируйте их на сервер, например в директорию /tmp. {warning:title=Warning} Необходимо создавать или заказывать ssl сертификаты без пароля. Иначе при перезапуске web сервера придётся каждый раз вводить пароль. Это создаёт проблемы при обновлении и подобных операциях. {warning}
|
h2. Поддерживаемые сертификаты
|
# Ru Center # RapidSSL # COMODO # Let's Encrypt
|
h3. RU-CENTER
|
|
h3. RU CENTER
|
[https://www.nic.ru]
|
|
h4. Заказ сертификата RUcenter RU-CENTER
|
Если вы хотите заказ свой сертификат для своего домена, то для начала вам нужно сгенерировать запрос на получение сертификата (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. RapidSSL [https://www.rapidssl.com]
|
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. Проверка срока действия сертификата
|
h3. Let's Encrypt
|
|
Вы можете узнать информацию по сертификату программой *openssl*. Этой командой можно узнать срок действия сертификата:
|
[https://letsencrypt.org]
|
|
{code}openssl x509 -text -noout -in mucert ca.crt | grep -E 'Before|After'{code}
|
h2. Инструкция по установке сертификата
|
|
* *Before* - время начала действия * *After* - время окончания действия h1. Инструкция по установке сертификата
|
# Настройте порты и включите 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 был включен глобально на сайт, а не только личный кабинет. Должно получиться приблизительно следующее: \\ \\ {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 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCACertificateFile /etc/pki/tls/certs/ca_bundle.crt #SSLVerifyClient require SSLCertificateKeyFile /etc/pki/tls/private/ca.key </VirtualHost>{code} *SSLCACertificateFile* \- путь к промежуточному сертификату *SSLCertificateFile* \- путь к сертификату сайта *SSLCertificateKeyFile* \- путь к файлу ключа сертификата \\ \\ # Скопируйте измененный файл конфигурации: {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} {warning}После этого изменения в настройках личного кабинета по адресу <ip биллинга>:8081/settings/asr_cabinet/ не будут менять настройки веб-сервера{warning} # Скопируйте сертификаты в директорию сертификатов: {code} 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} # 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} # Проверка корректности установки сертификата Для проверки корректности установки сертификата необходимо перезапустить http сервер командой {code}chroot /app/asr_cabinet/ /etc/init.d/httpd restart {code} Если сертификат установлен корректно, то у Вас отобразится следующее: {panel}Останавливается httpd: \[ OK \] Запускается httpd: \[ OK \]{panel} В том случае, если при запуске *httpd* отображается сбой, то необходимо проверить лог ошибок, который находится в */app/asr_cabinet/var/log/httpd/error_log.* После того, как сервис *httpd* корректно запустится, необходимо выполнить команду {code}/app/asr_cabinet/service restart{code} Если в результате перезапуска все сервисы стартовали со статусом \[ OK \], необходимо проверить корректность установки сертификата и переадресации на https при переходе в личный кабинет, например через браузер Firefox. Используя браузер можно увидеть ошибки сертификата: * *неверный сайт* \- вероятно, вы обращаетесь на сайт по ip, а сертификат выдан для домена. В комментарии вы увидите всю нужную информацию; \\ \\
|
* *недоверенный сертификат* \- вероятно, вы не выгрузили серверный сертификат, либо выгрузили вместо него другой сертификат; \\ \\ * *просроченный сертификат* \- вышел срок действия сертификата, нужно покупать новый.
|
h3. Проверка срока действия сертификата Вы можете узнать информацию по сертификату программой *openssl*. Этой командой можно узнать срок действия сертификата: {code}openssl x509 -text -noout -in mucert ca.crt | grep -E 'Before|After'{code} * *Before* - время начала действия * *After* - время окончания действия
|