FreeBSD 5.3
OpenLDAP server 2.2.26
OpenSSL 0.9.7g
Squid 2.5.10_1
Настраиваю шлюз в инет,на нем прокси Squid,авторизация посредством LDAP с TLS.Не получается включить TLS в LDAP.
slapd.conf :
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/corba.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schemaTLSCertificateFile /usr/local/etc/openldap/ssl/server.pem
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/server.pem
TLSCACertificateFile /usr/lical/etc/openldap/ssl/server.pempidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.argsloglevel -1
#######################################################################
# BDB database definitions
#######################################################################database ldbm
suffix "dc=helper,dc=ru"
rootdn "cn=admin,dc=helper,dc=ru"
rootpw secret
directory /var/db/openldapindex objectClass,uid,uidNumber,gidNumber eq
index cn,name,surName,givenName eq,subinitialaccess to attr=userPassword
by self write
by anonymous auth
by dn="cn=admin,dc=helper,dc=ru" write
by * read access to *
by dn="cn=admin,dc=helper,dc=ru" write
by * readldap.conf :
BASE dc=helper, dc=ru
URI ldap://127.0.0.1 ldap://ldap.helper.ru
TLS_CACERT /usr/local/etc/openldap/ssl/server.pemВот это падает в debug.log :
Jun 7 16:25:37 bsd slapd[13795]: main: TLS init def ctx failed: -1
Jun 7 16:25:37 bsd slapd[13795]: slapd shutdown: freeing system resources.
Jun 7 16:25:37 bsd slapd[13795]: slapd stopped.
Jun 7 16:25:37 bsd slapd[13795]: connections_destroy: nothing to destroy.Что посоветуете,наведите на путь истинный?
>FreeBSD 5.3
>OpenLDAP server 2.2.26
>OpenSSL 0.9.7g
>Squid 2.5.10_1
>Настраиваю шлюз в инет,на нем прокси Squid,авторизация посредством LDAP с TLS.
>
>Не получается включить TLS в LDAP.
>
>slapd.conf :
>
>include /usr/local/etc/openldap/schema/core.schema
>include /usr/local/etc/openldap/schema/cosine.schema
>include /usr/local/etc/openldap/schema/corba.schema
>include /usr/local/etc/openldap/schema/inetorgperson.schema
>include /usr/local/etc/openldap/schema/misc.schema
>include /usr/local/etc/openldap/schema/nis.schema
>include /usr/local/etc/openldap/schema/openldap.schema
>
>TLSCertificateFile /usr/local/etc/openldap/ssl/server.pem
>TLSCertificateKeyFile /usr/local/etc/openldap/ssl/server.pem
>TLSCACertificateFile /usr/lical/etc/openldap/ssl/server.pem
>
>pidfile /var/run/openldap/slapd.pid
>argsfile /var/run/openldap/slapd.args
>
>loglevel -1
>#######################################################################
># BDB database definitions
>#######################################################################
>
>database ldbm
>suffix "dc=helper,dc=ru"
>rootdn "cn=admin,dc=helper,dc=ru"
>rootpw secret
>directory /var/db/openldap
>
>index objectClass,uid,uidNumber,gidNumber eq
>index cn,name,surName,givenName eq,subinitial
>
>access to attr=userPassword
>by self write
>by anonymous auth
>by dn="cn=admin,dc=helper,dc=ru" write
>by * read access to *
>by dn="cn=admin,dc=helper,dc=ru" write
>by * read
>
>ldap.conf :
>BASE dc=helper, dc=ru
>URI ldap://127.0.0.1 ldap://ldap.helper.ru
>TLS_CACERT /usr/local/etc/openldap/ssl/server.pem
>
>Вот это падает в debug.log :
>
>Jun 7 16:25:37 bsd slapd[13795]: main: TLS init def ctx failed: -1
>
>Jun 7 16:25:37 bsd slapd[13795]: slapd shutdown: freeing system resources.
>Jun 7 16:25:37 bsd slapd[13795]: slapd stopped.
>Jun 7 16:25:37 bsd slapd[13795]: connections_destroy: nothing to destroy.
>
>Что посоветуете,наведите на путь истинный?
посоветую заполнить ldap.conf такими переменными
TLS_CACERTDIR
TLS_REQCERT
TLS_CERT
TLS_KEY
TLS_CACERT
а затем запустить slapd -d -1
если вас там всё удовлетворило, непосредственно проверить работу tls
ldapseacrh -ZZ
если же и опять не всё в порядке, найти на это сайте документацию про ldap и сделать как там описано
2 bass:
Добавил,вроде заработало.Сенкс
ldapsearch -ZZ выводит описания всех трех(тестовых) юзерских записей
пишет search result:
search: 3
result: 0 Success
numResponses: 9
numEntries: 8но,после свех добавлений перестала работать авторизация squid_ldap_auth (((
>2 bass:
>Добавил,вроде заработало.Сенкс
>ldapsearch -ZZ выводит описания всех трех(тестовых) юзерских записей
>пишет search result:
>search: 3
>result: 0 Success
> numResponses: 9
> numEntries: 8
>
>но,после свех добавлений перестала работать авторизация squid_ldap_auth (((
а в локах чего?
пытался разобраться самостоятельно,но далеко не ушел :(((привожу измененные slapd.conf и ldap.conf :
slapd.conf
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/corba.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/openldap.schema
include /usr/local/etc/openldap/schema/nis.schema# Define global ACLs to disable default read access.
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral ldap://root.openldap.orgTLSCertificateFile /usr/local/etc/openldap/ssl/user.cert
TLSCertificateKeyFile /usr/local/etc/openldap/ssl/user.key
TLSCACertificateFile /usr/local/etc/openldap/ssl/ca.cert
#TLSCACertificatePath /usr/local/etc/openldap
#TLSCipherSuite HIGH:MEDIUM:+SSLv2:+TLSv1
#TLSRandFile /dev/random
#TLSVerifyClient allow
#disallow tls_authcpidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args# Load dynamic backend modules:
# modulepath /usr/local/libexec/openldap
# moduleload back_bdb
# moduleload back_ldap
# moduleload back_ldbm
# moduleload back_passwd
# moduleload back_shell# Sample security restrictions
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64# Sample access control policy:
# Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn. (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!loglevel -1
#######################################################################
# BDB database definitions
#######################################################################database ldbm
suffix "dc=helper,dc=ru"
rootdn "cn=admin,dc=helper,dc=ru"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw secret
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/db/openldap
# Indices to maintain
index objectClass,uid,uidNumber,gidNumber eq
index cn,name,surName,givenName eq,subinitialaccess to attr=userPassword
by self write
by anonymous auth
by dn="cn=admin,dc=helper,dc=ru" write
by * readaccess to *
by dn="cn=admin,dc=helper,dc=ru" write
by * read
ldap.conf
#
# LDAP Defaults
## See ldap.conf(5) for details
# This file should be world readable but not world writable.BASE dc=helper,dc=ru
URI ldap:/// ldaps:///#ldap://ldap-master.example.com:666
TLS_CACERTDIR /usr/local/etc/openldap/ssl
TLS_CACERT /usr/local/etc/openldap/ssl/ca.cert
TLS_CERT /usr/local/etc/openldap/ssl/user.cert
TLS_KEY /usr/local/etc/openldap/ssl/user.key
#TLS_RANDFILE /dev/random
TLS_REQCERT never
ssl start_tls#SIZELIMIT 12
#TIMELIMIT 15
#DEREF neverХелпер сквида вызывается так:
auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -b "dc=helper,dc=ru" -w secret -f "(uid=%s)" -v 3 -H ldaps://127.0.0.1Запускаю slapd:
/usr/local/libexec/slapd -d 9 -h ldaps://localhostв лог попадает следующее:
..........
connection_read(8): unable to get TLS client DN,error=49 id=0
..........
ber_get_next on fd failed errno=35 (Resource temporarly unavailable)Если ldapsearch -d 8 -ZZ,то в логе:
TLS certificate verification: Error,self signed certificateПри всех этих настройках индентификация юзера проходит,но работает ли TLS?
Я при всех своих скромных познаниях-запутался неслабо :(((
>auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -b "dc=helper,dc=ru" -w secret -f "(uid=%s)" -v 3
>-H ldaps://127.0.0.1
>Давайте разберёмся. Вам нужен tls или ssl?
Вы уже прочитали документацию на этой сайте?
Насколько я помню (может что изменилось) squid_ldap_auth не умеет tls>Запускаю slapd:
>/usr/local/libexec/slapd -d 9 -h ldaps://localhost
>
>в лог попадает следующее:
>..........
>connection_read(8): unable to get TLS client DN,error=49 id=0
>..........
>ber_get_next on fd failed errno=35 (Resource temporarly unavailable)
>
неправильно сгенерирован сертификат>Если ldapsearch -d 8 -ZZ,то в логе:
>TLS certificate verification: Error,self signed certificate
>
читай выше>При всех этих настройках индентификация юзера проходит,но работает ли TLS?
>Я при всех своих скромных познаниях-запутался неслабо :(((послушайте localhost
Сейчас у меня не получается сгенирировать сертификаты,а делаю я это так:
1. /usr/local/openssl/misc/CA.sh -newca
CA certificate filename (or enter to create) <enter>
..............................
Enter PEM pass phrase: <ca password>
..............................
Country name (2 letter code) [AU]: RU
State or Province Name (full name) [Some-State]: Russia
Locality Name (eq,sity): Syk
Organization Name (eq,company): Helper Org
Organizational Unit Name (eq,section): Helper Unit
Common Name (eq,YOUR name): helper.com
Email Address []:
В итоге получим cacert.pem
2.openssl req -newkey rsa:1024 -nodes -keyout newreq.pem -out newreq.pem
..............................
Country name (2 letter code) [AU]: RU
State or Province Name (full name) [Some-State]: Russia
Locality Name (eq,sity): Syk
Organization Name (eq,company): Helper Org
Organizational Unit Name (eq,section): Helper Unit
Common Name (eq,YOUR name): 127.0.0.1
Email Address []:
В итоге получаем newreq.pem
3./usr/local/openssl/misc/CA.sh -sign
Тут получаем вот это:
Using configuration from /etc/ssl/openssl.cnf
25944:error:0E06D06C:configuration file routines:NCONF_get_string:
no value:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/
conf/conf_lib.c:329:gruop=CA_default name=unique_subject
Enter PEM pass phrase: <ca pass>
......................................
В итоге получаем newcert.pemЗапускаю ldap:
/usr/libexec/slapd -d127 -h "ldap:/// ldaps:///"
Проверяю коннект:
openssl s_client -connect 127.0.0.1:636 -showcerts -state -CAfile \
/usr/local/etc/openldap/cacert.pem
Получаю в ответ :
CONNECTED(00000003)
...................
SSL3 alert read:fatal:handshake failure
SSL_connect:failed in SSLv3 read finished A
..............................В логе slapd:
TLS trace: SSL3 alert write:fatal:handshake failure
TLS trace: SSL_accept:error in SSLv3 read client certificate B
TLS: can't accept
........................
нарегал сертификаты с помощю CA.pl,как подсказали в http://unix.nordcomp.ru/forum.html?page=1&id=73…теперь handshake есть
CA.pl не мог сгенерить файл serial,так я его вручную создал и добавил в него 01.Сейчас говорит что:
verify error:num=21:unable to verify the first certificate
No client certificate CA names sentПопробую исправить,погенерю еще )))
или это нормально???
Проблема аналогичная но действия описанные выше не помогли
Подскажите как решить#slapd.conf
#схемы
include /usr/etc/openldap/schema/core.schema
#include /usr/etc/openldap/schema/openldap.schema
include /usr/etc/openldap/schema/java.schema
include /usr/etc/openldap/schema/cosine.schema
include /usr/etc/openldap/schema/ppolicy.schema
include /usr/etc/openldap/schema/corba.schema
include /usr/etc/openldap/schema/dyngroup.schema
include /usr/etc/openldap/schema/inetorgperson.schema
include /usr/etc/openldap/schema/misc.schema
include /usr/etc/openldap/schema/nis.schema
include /usr/etc/openldap/schema/dhcp.schema#процессы
pidfile /usr/var/run/slapd.pid
argsfile /usr/var/run/slapd.args#Указываем версию SSL соединения, пути к сертификатам, приватный ключ
#TLSCipherSuite HIGH:MEDIUM:+SSLv2:+TLSv1
TLSCertificateFile /etc/ssl/ldap/cert.csr
TLSCertificateKeyFile /etc/ssl/ldap/privkey.pem
TLSCACertificateFile /etc/ssl/ldap/cacert.pem# modulepath /usr/libexec/openldap
# moduleload back_bdb.la
# moduleload back_ldap.la
# moduleload back_ldbm.la
# moduleload back_passwd.la
# moduleload back_shell.laaccess to attrs=userPassword
by self read
by anonymous auth
by * noneaccess to dn.base="cn=ns.petrsu.ru,dc=petrsu,dc=ru"
by dn.base="uid=dhcpd,ou=Users,dc=petrsu,dc=ru" read
by * noneaccess to dn.sub="cn=dhcp,dc=petrsu,dc=ru"
by dn.base="uid=dhcpd,ou=Users,dc=petrsu,dc=ru" read
by * noneaccess to *
by * none#######################################################################
# BDB database definitions
#######################################################################database ldbm
lastmod on
suffix "dc=petrsu,dc=ru"
rootdn "cn=sysadmin,dc=petrsu,dc=ru"
rootpw {SSHA}ключ
directory /usr/var/openldap-data#Indices to maintain
index objectClass eq#индексы для dhcp eq
index dhcpHWAddress eq
index dhcpClassData eq
index dhcpStatements eq
index cn,uid,uidNumber,gidNumber eq
ldap.conf
# LDAPBASE dc=petrsu, dc=ru
URI ldap://127.0.0.1:389 ldaps://172.20.0.64:636#SIZELIMIT 12
#TIMELIMIT 15
#DEREF neverTLS_CACERTDIR /etc/ssl/ldap
TLS_CACERT /etc/ssl/ldap/cacert.pem
TLS_CERT /etc/ssl/ldap/cert.csr
TLS_KEY /etc/ssl/ldap/privkey.pem
TLS_REQCERT never
ssl start_tls