>Помогите, плиз, кто может.
Приблизительно так:
Настройка Apache и Internet Explorer для работы с SSL по схеме с клиентскими сертификатами.
NB: Все пути указаны для моей установки. Указаные в этом документе файлы на вашей системе
могут находиться в другом месте.
1) Само сабой, устновить на сервер Apache, mod_ssl, openssl.
2) Настроить апач на работу с mod_ssl:
для версии 1.3.х:
добавить в httpd.conf следуюшие строки
LoadModule ssl_module extramodules/libssl.so
AddModule mod_ssl.c
Include conf/addon-modules/mod_ssl.conf
Сделать VirtualHost с SSL-ем.
<VirtualHost 10.123.123.9:443>
ServerName my.ssl.server
ServerAdmin root@ssl.server
DocumentRoot /www/DEFAULT_WEB
CustomLog "/var/log/apache/access.log" combined
ErrorLog logs/error.log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile conf/ssl/server.cert.pem
SSLCertificateKeyFile conf/ssl/server.key.pem
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile conf/ssl/ca.crt
</VirtualHost>
3) Создать сертификат для CA и сервера.
cd /ets/ssl
Редактируем файл openssl.cnf, добавляя туда следуюшию секцию
[ srv_cert ]
basicConstraints=CA:FALSE
nsCertType = server
nsComment = "IFC OLMA Generated Sertificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
Далее, немного меняем скрипт misc/CA.sh добавляя туда такое действие:
-newscert)
# create a certificate
$REQ -new -x509 -keyout newreq.pem -out newreq.pem -extensions srv_cert $DAYS
RET=$?
echo "Certificate (and private key) is in newreq.pem"
;;
В этом же файле указываем в качестве CATOP некий каталог в котором будут
храниться все сертификаты. В моем случае это /etc/ssl/MY
Генерим сертификат CA
cd misc
./CA.sh -newca
После ответов на вопросы и запоминиания пароля, мы получаем CA сертификат в
$CATOP/cacert.pem
Сразу же делаем openssl x509 -in $CATOP/cacert.pem -outform DER -out my.cer
Выкладываем my.cer в доступное место. Этот сертификат будет нужен клиентам, для
того что бы Explorer не пристывал к ним с глупыми вопросами.
Далее делаем сертификат сервера.
./CA.sh -newscert (замечу, что -newscert это нами добавленое действие)
Отвечаем на вопросы. Первый спрошеный пароль, это пароль CA, тот, что мы задали
при генерации сертификата CA. В качестве Common Name указываем имя хоста, в нашем
случае my.ssl.server
Получаем сертификат в файле newcert.pem и ключ в newreq.pem
Из newreq.pem вырезаем кусок начинающийся с -----BEGIN RSA PRIVATE KEY----- и
вавляем его в /etc/apache/conf/ssl/server.key.pem. Что бы при старте Apache не
спрашивал пароль делаем
openssl rsa -in /etc/apache/conf/ssl/server.key -out /etc/apache/conf/server.key.pem
Файл newcert.pem копируем в /etc/apache/conf/ssl/server.cert.pem
В файл /etc/apache/conf/ssl/ca.crt добавляем содержимое $CATOP/cacert.pem
В последствии, в этот файл помещаем все корневые сертификаты, подписи которых
мы будем доверять. В данном случае, мы доверяем только себе.
В этом месте можно запустить apache.
Созадем клиентский сертификат
./CA.sh -newreq
Отвечаем на вопросы, задаем пароль.
Подписываем запрос.
./CA.sh -sign
Теперь в newcert.pem и newreq.pem лежат сертификат и ключ клиента.
Делаем
openssl pkcs12 -export -in newcert.pem -inkey newreq.tmp -out client1.p12 -name "Наш дорогой клиент"
На этом шаге вводится сначала пароль, который был задан при генерации запроса,
а затем пароль, который будет нужен клиенту для установки сертификата.
4) Настройка Internet Explorer на работу с сертификатми.
На клиенте, получаем наш my.cer. Предположим, что мы его скачали с обычного нашего
веба или ftp-сервера. Кликаем на нем два раза и в появившемся окне сертификата
нажимаем кнопку установить.
Открываем Explorer. Идем в "Свойства Оборзевателя" на вкладку "Общие". Жмем
"Сертификаты", затем "Импорт". Указываем наш файлик client1.p12. Вводим
пароль. И наслаждаемся жизнью.
Вот собствено и все. Файлы с клиентской машины можно удалить. Они больше не нужны. Если, конечно,
клиент не будет переставлять оперционку или работать еще на одном компьютере.
Данная схема конечно не идеальна. Есть еще возможность сделать рутовый сертификат, которым
подписать сертификат CA, и так далее, и так далее...