Просмотр Исходного

{toc}

h3. Введение

При работе личного кабинета абонента по https, используются автоматически сгенерированные самоподписанные сертификаты.

При этом, как правило, абонент получает в браузере предупреждение об использовании сайтом недоверенного сертификата.

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

Сертификационные центры чаще всего используют трехуровневую схему подписей,

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

Сертификаты должны быть в формате PEM.

Получите нужные файлы у центра сертификации и по scp скопируйте их на сервер, например в директорию /tmp.

{warning:title=Warning}
Необходимо создавать или заказывать ssl сертификаты без пароля. Иначе при перезапуске web сервера придётся каждый раз вводить пароль. Это создаёт проблемы при обновлении и подобных операциях.
{warning}

h3. Поддерживаемые сертификаты

# Ru Center
# RapidSSL

h3. Соответствие имён сертификатов от 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. Инструкция по установке сертификата

# Настройте порты и включите 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:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \[&nbsp; OK&nbsp; \]
Запускается httpd:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; \[&nbsp; OK&nbsp; \]{panel}
В том случае, если при запуске *httpd* отображается сбой, то необходимо проверить лог ошибок, который находится в */app/asr_cabinet/var/log/httpd/error_log.*

После того, как сервис *httpd* корректно запустится, необходимо выполнить команду

{code}/app/asr_cabinet/service restart{code}
Если в результате перезапуска все сервисы стартовали со статусом \[&nbsp; OK&nbsp; \], необходимо проверить корректность установки сертификата и переадресации на https при переходе в личный кабинет, например через браузер Firefox.

Используя браузер можно увидеть ошибки сертификата:
* *неверный сайт* \- вероятно, вы обращаетесь на сайт по ip, а сертификат выдан для домена. В комментарии вы увидите всю нужную информацию; \\ \\
* *недоверенный сертификат* \- вероятно, вы не выгрузили серверный сертификат, либо выгрузили вместо него другой сертификат; \\ \\
* *просроченный сертификат* \- вышел срок действия сертификата, нужно покупать новый.

h3. Заказ сертификата RUcenter

Если вы хотите заказ свой сертификат для своего домена, то для начала вам нужно сгенерировать запрос на получение сертификата (CSR), подробнее вы можете посмотреть на [сайте Руцентра|http://www.nic.ru/dns/service/ssl/csr.html].

По указанной ссылке доступна инструкция "Генерация CSR для Apache", для генерации запроса нужно выполнить шаги из инструкции.