воскресенье, 5 апреля 2015 г.

Apache - CentOS - Самоподписанный Мультидоменный SSL Сертификат / Apache - CentOS - Self-signed multiple-domain SSL Certificate


    Иногда для сайта бывает нужно создать самоподписанный SSL Сертификат. В Linux системах это делается с помощью openssl пакета. Помимо прочего есть потребность в том, чтобы этот сертификат покрывал не одно доменного имя а несколько, плюс IP адреса. Ниже краткая последовательность действий для реализации данной задачи.

Устанавливаем нужные пакеты:
yum - install mod_ssl openssl

Перемещаемся в директорию вашего сайта, создаём директорию cert и переходим в неё:
cd /var/www/river.ru/
mkdir cert
cd cert

Копируем стандартный конфигурационный файл openssl.cnf в директорию нашего сайта:
cp /etc/pki/tls/openssl.cnf /var/www/river.ru/cert/river.ru.cnf (для CentOS)

    в других случаях может быть
cp /etc/ssl/openssl.cnf /var/www/river.ru/cert/river.ru.cnf

Открываем на редактирование river.ru.cnf:
vi /var/www/river.ru/cert/river.ru.cnf

    В секции [ req ] раскомментируем:
req_extensions = v3_req

    В секции [ v3_req ] добавляем:
subjectAltName = @alt_names

    Выглядеть будет так:
            [ v3_req ]

            # Extensions to add to a certificate request

            basicConstraints = CA:FALSE
            keyUsage = nonRepudiation, digitalSignature, keyEncipherment
            subjectAltName = @alt_names

    В конце файла добавляем (все имена и IP, которые будет покрывать сертификат):
[ alt_names ]
DNS.1 = www.river.ru
DNS.2 = river.ru
DNS.3 = mail.river.ru
IP.1 = 45.87.43.2
IP.2 = 108.54.90.23

==============================================================
Будучи в директории /var/www/river.ru/cert/
        создаём закрытый ключ:
openssl genrsa -out sanriver.ru.key 2048

        создаём CSR файл:
openssl req -new -out sanriver.ru.csr -key sanriver.ru.key -config river.ru.cnf

        проверяем:
openssl req -in sanriver.ru.csr -noout -text

        должны получить:
            ....................................................................
            Requested Extensions:
                        X509v3 Basic Constraints:
                            CA:FALSE
                        X509v3 Key Usage:
                            Digital Signature, Non Repudiation, Key Encipherment
                        X509v3 Subject Alternative Name:
                            DNS:river.ru, DNS:www.river.ru, DNS:river.ru, DNS:mail.river.ru, 
                        IP Address:45.87.43.2, IP Address:108.54.90.23
            ....................................................................

Самоподписываем и создаём сертификат:
openssl x509 -req -days 3650 -in sanriver.ru.csr -signkey sanriver.ru.key -out sanriver.ru.crt -extensions v3_req -extfile river.ru.cnf

Упаковываем ключ и сертификат в PKCS12 файл (для IIS):
openssl pkcs12 -export -in sanriver.ru.crt -inkey sanriver.ru.key -out sanriver.ru.p12

Урезаем права на созданные файлы:
chmod 400 /var/www/river.ru/cert/sankuchuk.*

    получим:
        [root@river cert]# ls -l
        total 28
        -rw-r--r--. 1 root root 11237 Apr  5 20:45 river.ru.cnf
        -r--------. 1 root root  1586 Apr  5 20:58 sanriver.ru.crt
        -r--------. 1 root root  1395 Apr  5 20:50 sanriver.ru.csr
        -r--------. 1 root root  1671 Apr  5 20:47 sanriver.ru.key
        -r--------. 1 root root  2725 Apr  5 20:59 sanriver.ru.p12

==============================================================
Открываем VirtualHost conf файл сайта и прописываем:
vi /etc/httpd/sites-available/river.ru.conf

            <VirtualHost *:443>
                    ServerName www.river.ru
                    ServerAlias river.ru
                    ServerAlias mail.river.ru
                    DocumentRoot /var/www/river.ru

                    SSLEngine On
                    SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
                    SSLCertificateFile /var/www/river.ru/cert/sanriver.ru.crt
                    SSLCertificateKeyFile /var/www/river.ru/cert/sanriver.ru.key

                    <Directory “/var/www/river.ru”>
                            Options Indexes FollowSymLinks
                            AllowOverride All
                            Order allow,deny
                            Allow from all
                    </Directory>

                    ErrorLog /var/www/river.ru/error.log
                    CustomLog /var/www/river.ru/requests.log combined
            </VirtualHost>

Перегружаем Apache:
systemctl restart httpd.service

Проверка сертификатов:
www.digicert.com
www.sslshopper.com


Комментариев нет:

Отправить комментарий