Иногда для сайта бывает нужно создать самоподписанный 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.comwww.sslshopper.com
Комментариев нет:
Отправить комментарий