Код: Выделить всё
Если нужно пускать только тех пользователей, которые имеют сертификаты,в папке с сертификатами создаем:
#!/bin/sh
#в дону строку
openssl req -new -newkey rsa:1024 -nodes -keyout client01.key -subj /C=RU/ST=Tver/L=Tver/O=Inc/OU=Firm/CN=Alex/emailAddress=you@mail -out client01.csr
openssl rsa -noout -text -in client01.key
openssl req -noout -text -in client01.csr
openssl ca -config ca.config -in client01.csr -out client01.crt -batch
openssl x509 -noout -text -in client01.crt
openssl pkcs12 -export -in client01.crt -inkey client01.key -certfile ca.crt -out client01.p12
В данном примере сертификаты сервера используются с приставкой `ca`. В статье с приставкой `server`.Полученные сертификаты необходимо установить в клиентский браузер,с которого разрешим смотреть страницу.
Далее в httpd-ssl.conf дописываем,к каким страницам доступ только по сертификатам
<Location /phpmyadmin>
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile /usr/local/etc/apache21/sert/ca.crt
</Location>
я закрыл phpmyadmin, шоб не лазили всякие.....
Al, 2007-10-23 в 13:07:51
Там же должен быть ca.config:
[ ca ]
default_ca = CA_CLIENT
[ CA_CLIENT ]
dir = ./db
certs = $dir/certs
new_certs_dir = $dir/newcerts
database = $dir/index.txt
serial = $dir/serial
certificate = ./ca.crt
private_key = ./ca.key
default_days = 365
default_crl_days = 7
default_md = md5
policy = policy_anything
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
И не забываем создавать папки
mkdir db
mkdir db/certs
mkdir db/newcerts
touch db/index.txt
echo "01" > db/serial
в логах /var/log/httpd-error.log
Код: Выделить всё
[Thu Aug 21 12:24:20 2008] [error] Re-negotiation handshake failed: Not accepted by client!?