Несколько SSL сертификатов на один IP

Понедельник, октября 10, 2011

Пришло время тотальной секурности. Не прошло оно и мимо нас. Срочно понадобилось навесить на разные виртуалхосты разные сертификаты. Уже делал такое, почему не  записал тогда .. не знаю.  Пишу сейчас. Возможно будет нужно в будущем.

Все это относится к CentOS 5.5, 5.6.
Установить gnutls:

yum install gnutls


С этим проблем никаких. Далее установить mod_gnutls. Но тут есть грабли, по крайней мере я наступал. После установки rpm модуля он не работает корректно и в логах сыпет:

[crit] GnuTLS: Unknown type '0' for SNI: 'example.com'

Если погуглить то грабли описаны и не раз.
Решение: собрать модуль руками.
Для этого доставить пакеты:

yum install httpd-devel gnutls-devel

Скачать исходники модуля:

wget http://www.outoforder.cc/downloads/mod_gnutls/mod_gnutls-0.2.0.tar.bz2

Далее поправить в файле src/gnutls_hooks.c строку

if (sni_type  != GNUTLS_NAME_DNS) {

на

if ((sni_type + 1) != GNUTLS_NAME_DNS) {

и собрать модуль.

ВАЖНО!!! Во время компиляции будет создано два файла dhfile и rsafile
         они будут в папке mod_gnutls-0.2.0/data/.
         Обязательно скопировать их в папку конфигов апача
         /etc/httpd/conf/ без них модуль не заработает.
         Об этом нигде не написано и выяснено после курения логов
         при попытке запустить апач с модулем.

Файл /etc/httpd/conf.d/mod_gnutls.conf привести к виду:

## Load the module into Apache.
LoadModule gnutls_module modules/libmod_gnutls.so
##
## Set Certificate MIME-types, may instead be in ssl.conf
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
##
## Set TLS Cache info
GnuTLSCache dbm "/var/cache/mod_gnutls_cache/"
GnuTLSCacheTimeout 300
##
Listen 1.2.3.4:443
##

А файл /etc/httpd/conf/secvhosts.conf приготовить так:

NameVirtualHost 1.2.3.4:443
##
<VirtualHost 1.2.3.4:443>
ServerName example.com:443
GnuTLSEnable on
DocumentRoot "/path/to/your/www"
GnuTLSCertificateFile /etc/cert/cert.crt
GnuTLSKeyFile /etc/cert/private.key
ErrorLog /var/log/httpd/websites/webmail/error_log
CustomLog /var/log/httpd/websites/webmail/access_log combined
</VirtualHost>

Генерация сертификата и запроса.

openssl genrsa -out name_of_key.key 2048
openssl req -new -key name_of_key.key -out name_of_key.csr

Вот и все. Остальные хосты добавлять по образу и подобию первого.
Как же он меня достал в процессе запуска. Чертова ошибка sni_type..

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники

One Response to “Несколько SSL сертификатов на один IP”

  1. do not forget about package gnutls-utils

Leave a Reply