2006/11/21

OpenTSA

Данное описание затрагивает процесс установки "time stamping" сервиса на базе патча к openssl и модуля mod_tsa к http-серверу Apache. Проект открытый, назван OpenTSA и достаточно активно развивается. Итак:

1. Выбранная версия openssl и соответствующий этой версии tsa-патч ставятся полностью по инструкции. Если в процессе сборки не возникло критических ошибок, на warning-сообщения можно не обращать внимания.

2. Apache2 должен быть собран на только что установленном openssl (в данном случае это /usr/local/openssl-0.9.8c):

./configure --prefix=/usr/local/apache2 --enable-ssl --with-ssl=/usr/local/openssl-0.9.8c
make && make install

3. Собрать модуль mod_tsa с помощью apxs из только что установленного Apache:

tar zxf  mod_tsa-xxxxxxxx.tgz
cd mod_tsa
make OPENSSL=/usr/local/openssl-0.9.8c APXS=/opt/apache2/bin/apxs APACHECTL=/opt/apache2/bin/apachectl
make install OPENSSL=/usr/local/openssl-0.9.8c APXS=/opt/apache2/bin/apxs APACHECTL=/opt/apache2/bin/apachectl

4. Подготовить базу данных для хранения timestamp-ответов, создать пользователя, который будет иметь неограниченный доступ и создать в готовой базе рабочую таблицу token:

CREATE TABLE `token` (
`token_id` varchar(40) collate utf8_unicode_ci NOT NULL default '',
`token_date` datetime NOT NULL default '0000-00-00 00:00:00',
`token_pkcs7` blob NOT NULL,
PRIMARY KEY (`token_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

5. Сгенерировать приватный ключ и сертификат на только что собранном openssl, так как он имеет необходимое расширение для сертификатов - Time Stamping.

/usr/local/openssl-0.9.8c/bin
./openssl genrsa -out server.key 2048
./openssl req -key server.key > server.csr

Отдать сгенерированный csr-файл своему CA, получить в ответ сертификат с timestamp-расширением, необходимый для функционирования модуля mod_tsa.

6. Добавить в конфигурацию Apache описание модуля и запустить Apache:

LoadModule tsa_module         modules/mod_tsa.so


SetHandler tsa
Order allow,deny
Allow from all

TSASerialFile conf/tsaserial
TSACertificate /usr/local/apache2/conf/server.crt
TSACertificateChain /usr/local/apache2/conf/ca-bundle.crt
TSAKey /usr/local/apache2/conf/server.key
TSADBModule MySQL
TSAMySQLHost localhost
TSAMySQLUser tsa_user
TSAMySQLDatabase tsa_db
# лучше открыть доступ без пароля, иначе при каждом новом старте
# Apache будет спрашивать пароль к БД
TSAMySQLPassPhrase Off

TSAKeyPassPhrase off
TSADefaultPolicy 1.1.2
TSAPolicies 1.1.3 1.1.4
TSAMessageDigests sha1 md5
TSAAccuracy 60 0 0
TSAClockPrecisionDigits 0
TSAOrdering On
TSAIncludeName On
TSAESSCertIdChain On

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

No comments: