Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Uruchomiłem LDAPa z TLS i działa bez problemu jak łaczę sie do niego przez JXpore. Na kiiencie wygenerowałem certyfikat podobnie jak na serwerze. JXplore daje rade i działa, jednak jak chce użyć ldapsearch to wywala mi błędem:
ldap_pvt_connect: fd: 3 tm: -1 async: 0 attempting to connect: connect success TLS: peer cert untrusted or revoked (0x42) TLS: can't connect: (unknown error code). ldap_err2string ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
No i moje pytanie co on ma z tym że certyfikat klienta jest nie zaufany abo odwołany? Raczej to nie możne być tak że ręcznie muszę wgrywać certyfikat każdego kienta na serwer.
Config Serwera:
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. BASE dc=od,dc=pgnig,dc=pl URI ldap://localhost #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never # TLS certificates (needed for GnuTLS) HOST odps03.od.pgnig.pl PORT 636 TLS_CACERT /etc/ssl/certs/cacert.pem #ca-certificates.crt TLS_REQCERT ALLOW
Konfig Kienta:
1 # 2 # LDAP Defaults 3 # 4 5 # See ldap.conf(5) for details 6 # This file should be world readable but not world writable. 7 8 #BASE dc=example,dc=com 9 #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 10 11 #SIZELIMIT 12 12 #TIMELIMIT 15 13 #DEREF never 14 15 # TLS certificates (needed for GnuTLS) 16 TLS_CACERT /etc/ssl/certs/cacert.pem 17
Curl natomiast zwraca mi błąd z certydikatem CA:
curl https://odps03:636 curl: (60) SSL certificate problem: self signed certificate in certificate chain More details here: https://curl.haxx.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
Sprawa jest to tyle pilna, bo dużo skryptów backup'owych i importowych jest w ciągłym użyciu
PS. TLS dla LDAP robiłem zgodnie z https://help.ubuntu.com/lts/serverguide/openldap-se … #openldap-tls
Ostatnio edytowany przez Krump (2019-07-09 14:54:21)
Offline
Potrzebujesz Certyfikatu CA i podpisanych nim certyfikatów serwera:
Certyfikat CA wrzucasz na maszynach do /etc/ssl/certs/,
Klucz prywatny CA trzymasz zabezpieczony.
Tu masz opis generowania certyfikatów do Mysql, identycznie powinno być do Ldapa:
https://www.thomas-krenn.com/pl/wiki/Szyfrowanie_SS … z%C4%85_MySQL
Ten przepis zawiera też przepis na certyfikat klienta, działa to na wszystkich znanych mi usługach korzystających z szyfrowania SSL.
Tu masz przykład użycia takich certów w Apachu (przepis sprzed kilku lat):
https://linuxconfig.org/apache-web-server-ssl-authentication
Do generowania CA można użyć Easy-rsa z projektu OpenVPN, tu masz przykład ze starszą wersją easy-rsa:
https://morfikov.github.io/post/generowanie-certyfi … ocy-easy-rsa/
Pozdro
Ostatnio edytowany przez Jacekalex (2019-07-09 15:53:54)
Offline
Czekaj, możesz mi wyjaśnić? Certyfikat CA am m wrzucić na klientów i za jego pomocą wygenerować certyfikaty klienta?
Bo na stacji klienckiej mam wygenerowany CA własny i przez niego wygenerowane pozostałe. Nie rozumiem gdzie popełniam błąd, gdyż JXplore po dodaniu certyfikatów w takiej konfiguracji działa poprawnie
Offline
Sprawdź wygenerowane certy:
składnia:
openssl verify -CAfile CertyfikatCA Certyfikat_serwera
Klucz publiczny CA wrzucasz na kompach klienckich do /etc/ssl/certs/ (na Linuxach),
na Windows sam poszukaj, gdzie te certy wsadzić.
Ostatnio edytowany przez Jacekalex (2019-07-10 10:56:24)
Offline
Uporządkujmy trochę wiedze, bo raz piszesz klucz publiczny a raz certyfikat.
Mówimy tylko o linuksach. Rozumiem że certyfikat CA wygenerowany na serwerze. Mam przerzucić na stacje kliencka i z jego pomocą wygenerować certyfikaty klienta. Odnoszę się ciągle do dokumentacji [html]https://help.ubuntu.com/lts/serverguide/openldap-server.html#openldap-tls[/html], bo tam jest wszystko jasne, co jest certyfikatem co kluczem.
Obecnie mam sytuację, iż wygenerowałem wszystko zgodnie z dokumentacja na serwerze. To samo zrobiłem na kliencie. A z tego co rozumiem po tym co piszesz, to powinienem przenieść certyfikat ca serwer ana klient ai z jego pomocą wygenerować resztę. Tak?
Co do twojej weryfikacji gdy weryfikuje certyfikat który mam obecnie:
openssl verify -CAfile /etc/ssl/certs/host.pem /etc/ssl/certs/cacert.pem CN = Przykladowa Firma error 18 at 0 depth lookup: self signed certificate error /etc/ssl/certs/cacert.pem: verification failed
Gdy pobrałem z serwera jego CA i weryfikuje:
openssl verify -CAfile /etc/ssl/certs/host.pem /etc/ssl/certs/cacert.pem CN = Przykladowa OD Firma error 18 at 0 depth lookup: self signed certificate error /etc/ssl/certs/cacert.pem: verification failed
CN się różni tyko.
Offline
No to musisz certy generować od nowa.
openssl verify -CAfile ./CA/ServerCA.crt ./jacek/jacek.crt jacek/jacek.crt: OK
tak wygląda wynik weryfikacji podpisanego prawidłowo certyfikatu.
PS:
-CAfile ma wskazywać certyfikat CA a nie certyfikat serwera, nie pomyliłeś kolejności certów?
PS2:
Certyfikat SSL to właśnie jest klucz publiczny RSA, DSA albo ECDSA.
Poczytaj trochę o certyfikatach SSL x509, zanim zaczniesz się bawić w w budowanie lokalnego CA.
Ostatnio edytowany przez Jacekalex (2019-07-10 11:50:58)
Offline
Ok taki mam wynik:
user@5CG6326QQ5:~$ openssl verify -CAfile /etc/ssl/certs/cacert.pem /etc/ssl/certs/host.pem /etc/ssl/certs/host.pem: OK user@5CG6326QQ5:~$ openssl verify -CAfile cacert.pem /etc/ssl/certs/host.pem CN = 5CG6326QQ5, O = Firma Przykadowa error 20 at 0 depth lookup: unable to get local issuer certificate error /etc/ssl/certs/host.pem: verification failed
Pierwszy to ten co mam, a drugi to pobrany CA z serwera.
Wychodzi na to, że źle wygenerowałem certyfikaty dla klienta, bo użyłem przez niego wygenerowanego CA zamiast CA serwera, racja? Więc muszę wygenerować certyfikaty dla hosta z użyciem tego CA pobranego.
Tylko pytanie, dlaczego na tej konfiguracji w JXplore zadziałało?
Offline
Nie znam JXplore, ale podejrzewam, że dla św spokoju Autorzy ustawili, żeby ignorował błędy certyfikatów.
Masz tam u góry jeden cert poprawny a drugi nie.
Czy host.pem na obu serwerach to ten sam certyfikat? czy dwa różne?
Bo albo różnią się certy host.pem a CA jest taki sam, albo host.pem jest taki sam a CA są różne.
Albo CA i host.pem z drugiego testu są z różnych parafii.
W każdym razie teraz już chyba sobie poradzisz.
Offline
host.pem to certyfikat hosta wygenerowany na stacji hosta za pomoca:
certtool --generate-certificate --load-privkey /etc/ssl/private/host.pem --load-ca-certificate /etc/ssl/certs/cacert_hosta.pem --load-ca-privkey /etc/ssl/private/cakey_hosta.pem --template /etc/ssl/host.info --outfile /etc/ssl/certs/host_slapd_cert.pem
Zmieniłem cacert.pem. Ten w katalogu ssl/certs jest wygenerowany lokanie na maszynie. Ten w katalogu . jest wygenerowany na serwerze i pobrany na hosta.
Pierwszy jest zgodny bo CA wygenerowanym na hoście wygenerowałem certyfikat klienta.
Drugi jest niezgodny bo certyfikatem CA serwera sprawdzałem certyfikat hosta, który był wygenerowany na pomocą CA hosta.
Rozumiem teraz że muszę na hosta wrzucić certyfikat CA serwera i jego klucz (na pewno klucz prywatny mam przesłać?) aby wygenerować certyfikat hosta. Wtedy będa w stanie się zweryfikować?
Ostatnio edytowany przez Krump (2019-07-10 14:59:00)
Offline
host.pem są jednakowe na kompach czy różne?
Offline
Host Pem to certyfikt hosta wygenerowany za pomoca cacert.pem. Każdy ma swój. Host ma sœój, serwer ma swój.
Offline
Krump napisał(-a):
Host Pem to certyfikt hosta wygenerowany za pomoca cacert.pem. Każdy ma swój. Host ma sœój, serwer ma swój.
Czyli sam sobie utrudniasz rozeznanie w certyfikatach.
Lepiej certy nazywać unikalnymi nazwami hostów, wtedy można to przynajmniej sensownie ogarnąć.
Ostatnio edytowany przez Jacekalex (2019-07-11 12:32:52)
Offline
OK, słuchaj zrobiłem tak:
Na serwerze certyfikujacym ze swoim Ca wygenerowałem certyfikat dla hosta z pomocą komendy:
certtool --generate-certificate --load-privkey /etc/ssl/private/odps03_slapd_key.pem --load-ca-certificate /etc/ssl/certs/cacert_odps03.pem --load-ca-privkey /etc/ssl/private/cakey_odps03.pem --template /etc/ssl/hosts/5CG6326QQ5.info --outfile /etc/ssl/hosts/5CG6326QQ5_slapd_cert.pem Gdzie --template /etc/ssl/hosts/5CG6326QQ5.info są to informacje hosta, reszta nazw plików zgadza się loicznie z ich przeznaczeniem, tj cakey_odps03 to klucz prywatny certyfikatu CA a odps03_slapd_key.pem to klucz prywatny serwera.
Tak wygenerowany certyfikat, wysłałem do host ai wrzuciłem do /etc/ssl/certs, a nastewpnie przeprowadziłem weryfikację:
openssl verify -CAfile /etc/ssl/certs/cacert_odps03.pem /etc/ssl/certs/5CG6326QQ5_slapd_cert.pem /etc/ssl/certs/5CG6326QQ5_slapd_cert.pem: OK Gdzie cacert_odps03.pem jest certyfikatem ca przesłanym z serwera, a 5CG6326QQ5_slapd_cert.pem jest świeżo przesłanym certyfikatem.
Wiec w sumie po bożemu wydałem certyfikat dla klienta.
Jednak do połączenia ldapsearch dalej nie dochodzi
Ostatnio edytowany przez Krump (2019-07-11 12:30:07)
Offline
Dobra, wyglad ana to, iz juz mi sie udąo, juz zrozumiałem gdzie robiłem błað. Musiałem uporządkowac sobie wiedze, gdyz teorytycznie wiem jak dizałaja certyfikaty i jaki jest mrchanizm, ale praktycznie sie pogubiłem. Teraz jes tjak bozia przykazała, juz mi nie zgłasza błedu z problemem certyfikatu. Mam tylko pytanie co do generowania certów dla kientów.:
1. Generowanie certów klienckich z pomocą CA serwera mam robić na serwerze ei wysyła mi certyfikat?
2. Jak na 1 tak to w takim razie co z kluczem prywatnym kenta? Bo murze mu wysłać aby on mógł go użyć do deszyfracji.
3. Jeżeli 1 i 2 nie to jak mam inaczej zgodnie ze sztuką prowadzić dystrybucję? Bo zeby wygenerować poprawnie cert klienta potrzebuje certyfikat CA i jego kucz (którego mam nie dystrybuować).
4. Jest inne narzędzie po za tym easy-rsa do robienia certyfikatów? Czy da się to jakoś zautomatyzować, typu wrzucenie nazw hostów do piku i jak dany host się zŋosi to automatycznie dostanie certyfikat? (tkaie małe PKI).
Z innej beczki, certy niby graja ale dalej mam probem z połaczeniem do LDAP z poziomu kienta, ktos mozę wie w czym problem?
ldapsearch -x -LLL -H ldaps://odps03 -D "cn=admin,dc=od,dc=firma,dc=pl" -b "ou=Users,dc=od,dc=firma,dc=pl" -d 1 ldap_url_parse_ext(ldaps://odps03) ldap_create ldap_url_parse_ext(ldaps://odps03:636/??base) ldap_sasl_bind ldap_send_initial_request ldap_new_connection 1 1 0 ldap_int_open_connection ldap_connect_to_host: TCP odps03:636 ldap_new_socket: 3 ldap_prepare_socket: 3 ldap_connect_to_host: Trying 10.66.64.11:636 ldap_pvt_connect: fd: 3 tm: -1 async: 0 attempting to connect: connect success ldap_err2string ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Drugi log:
ldap_url_parse_ext(ldaps://odps03.od.pgnig.pl) ldap_create ldap_url_parse_ext(ldaps://odps03.od.pgnig.pl:636/??base) ldap_extended_operation_s ldap_extended_operation ldap_send_initial_request ldap_new_connection 1 1 0 ldap_int_open_connection ldap_connect_to_host: TCP odps03.od.pgnig.pl:636 ldap_new_socket: 3 ldap_prepare_socket: 3 ldap_connect_to_host: Trying 10.66.64.11:636 ldap_pvt_connect: fd: 3 tm: -1 async: 0 attempting to connect: connect success ldap_err2string ldap_start_tls: Can't contact LDAP server (-1) ldap_sasl_bind ldap_send_initial_request ldap_send_server_request ldap_err2string ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Ostatnio edytowany przez Krump (2019-07-12 10:23:58)
Offline
Ja bym zrobił tak:
Generuję klucz i cert CA, certyfikat CA kopiuję między maszynami - ma być wspólny.
Generuję certyfikaty dla serwerów - każdy o unikalnej nazwie serwera.
Podpisuję je kluczem CA, i sprawdzam poprawność każdego certu serwera z certyfikatem CA.
Generuję certyfikaty klientów, podpisuję je kluczem CA, sprawdzam podpis z certyfikatem CA i rozsyłam po klientach.
W ten sposób mam porządek i musi to działać ze wszystkimi usługami używającymi SSL w obrębie prywatnego CA.
Razem jest to może godzinka-dwie roboty, którą trzeba kontrolować na każdym etapie pośrednim.
Chociaż nie ukrywam, że do LDAPa mam spore uczulenie, wolę bazy SQL, które robią dokładnie to samo.
Do vcard i kalendarza jest np Davical, Baikal czy Radicale, które pięknie gadają
z Thunderbirdem, Outlookiem, IPhonem i systemowym kalendarzem Androida. ;)
PS:
Generowanie certów możesz sobie oskrypcić i używać czystego openssl.
Z resztą w źródłach openssl masz gotowe skrypty CA.pl i CA.sh, mogą posłużyć za inspirację.
Podobnie z resztą jak easy-rsa.
Ostatnio edytowany przez Jacekalex (2019-07-12 10:45:39)
Offline
Ok, super. Czyi miałem dosyć podobny model całego procesu.
No mi protokół LDAP jest potrzebny do samby, i telefonii voip.
A co z tym błędem, jakiś pomysł jak mogę to głębiej zdebugować albo w czym problem?
Offline
LDAP do telefonii VOIP?
Warto tak sobie życie utrudniać?
Asterisk najlepiej i najszybciej chodzi z Mysqlem Postrgresql, lub Radiusem, Freeswitch z Postgresql, ODBC lub Radiusem.
Samba ewentualnie, ale w Sambie lepiej trzymać samą autoryzację i oprzeć ją na najbardziej niezawodnym elemencie systemu Linux/UNIX/BSD:
https://wiki.samba.org/index.php/Authenticating_Domain_Users_Using_PAM
Pakując LDAP do Voip i Samby zrobiłeś sobie najpiękniejszy SPOF w najbardziej krytycznym miejscu, jakie mogłeś wymyślić.
Jeżeli masz to w sieci LAN, to ja bym na razie awaryjnie zdjął szyfrowanie, a docelowo podziękował LDAPowi za uwagę.
Vcard w czasach cegłofonów da się dużo sensowniej rozwiązać z wykorzystaniem https.
Autoryzacja to najlepiej PAM, Radius i SQL.
Tam masz tyle opcji i bibliotek, ze zawsze masz spore pole manewru, jak jakiś demon się skicha.
Np nie przypominam sobie jakichś problemów z Mysql czy Postgresem, FreeRadius też jest dosyć przewidywalny (chociaż czasem kiepsko znosi aktualizacje Openssl).
Ostatnio edytowany przez Jacekalex (2019-07-12 12:25:58)
Offline
Ogólnie wszystko działa, a LDAP jest rozwiązaniem jakie przyjęto przedemna i to zastałem, teraz działa to na ldap bez szyfrowania ale wymogiem jest że ma zostać włączone. Dalego postawiłem obok maszynę i próbuje uruchomić na świeżym to TLS... Jak uruchomię i zrobię testy to kwestia podmiany w IP. Co do telefonii to wiem o Astersik, ale LDAP nie służy na tym poziomie. Centralkę ma provider i nie mogę tego zmienić. LDAP służy pod cała resztę potrzebna do telefonii.
Na razie murze to uruchomić jak jest aby wyłączyć starego grata i wyciszyć szumy Paniki, że coś lata w formie do prostego podsłuchu. Potem będę rzeźbił tak jak mówisz, bo też to mam na uwadze. Cel obecnie jest inny.
Offline
Ma być szyfrowanie?
To zrób tunel OpenVPN, OpenSSH czy Stunnel, i niech nieszyfrowany ldap fruwa w tym tunelu, jak sam ma problemy z szyfrowaniem.
Względnie jeśli LDAP wcześniej działał z szyfrowaniem a obecnie przestał, to może jakiś upgrade lub downgrade pomoże?
Próbowałeś użyć innego systemu do tego LDApa, np CentOSa?
Może po prostu Openldap był kompilowany z inną wersją biblioteki SSL niż masz obecnie w systemie, i dlatego są takie kłopoty.
Czy ten ldap nigdy nie chodził po SSL, czy chodził i zdechł po jakiejś aktualizacji?
Offline
No nie zrobie szyfrowania dla setek kientów. I tak będę musiał cos wymyśic aby np telefony pobiera sobie certyfikat z https lub sftp. Ale słabo widże generowania certyfikatów dla każdego urządzenia osobno ręcznie.
Szyfrowanie nigdy nie działało, Ale powstał lament i trzeba włączyć.
Offline
Setek klientów do LDAPa?
To pakuj tam Windows Serwer, LDAP to pomysł Microsoftu, OpenLDAP to jest proteza, niby ma działać, ale w miarę umierania Windowsa, ani Linux ani Android, ani Apple za nim nie tęsknią, co widać choćby w Twoich ostatnich problemach z szyfrowaniem.
Z resztą widziałeś jakieś usługi Googla, FB, Twittera, Dropbox czy innych podobnej wagi operatorów, którzy by mieli cokolwiek wspólnego z LDAPem?
A przecież mają wizytówki Vcard, mają książki adresowe, mają wirtualne dyski, wszystko schowane za dosyć solidną autoryzacją.
To samo operatorzy Voip obrabiający nie kilkuset, ale kilkanaście albo nawet kilkaset tysięcy klientów.
O Komunikatorach typu Signal, Telegram, Hangouts czy WhatsApp nie wspominając.
Ostatnio edytowany przez Jacekalex (2019-07-12 14:49:33)
Offline
Ok rozumiem i się z toba zgadzam, ale nie ma opcji na rozwiązania MicroSoftu. Muszę szukać linuksowych rozwiązań. Więc jakie rozwiązanie docelowo będzie najlepsze biorą pod uwagę co piszesz.
Offline
Może mam config zwalony? Robiłem różne próby konfiguracji aby rozwiązać problem, dlatego tye komentarzy.
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. BASE dc=example,dc=company,dc=pl URI ldap://localhost ldaps:/// ldaps://odps03:636 #SLAPD_URLS="ldapi:/// ldap:/// ldaps:///" #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never # TLS certificates (needed for GnuTLS) HOST odps03.example.company.pl PORT 636 TLS_CACERT /etc/ssl/certs/cacert.pem #ca-certificates.crt #TlS_CERT /etc/ssl/certs/odps03_slapd_cert.pem #TLS_KEY internal:secret TLS_REQCERT never #DEMAND #ALLOW
Ostatnio edytowany przez Krump (2019-07-15 12:08:36)
Offline
Co to znaczy że nie ma opcji na M$?
Sieć na 250 klientów LDAP to nie jest mała 3 osobowa firma, żeby nie było kasy na Windows serwer raz na 10 lat.
Także lepiej zobacz, czy tam jest potrzebny informatyk czy syndyk.
Co się tyczy OpenLDAP, to szkoda, ze nigdy nie miałeś działającego po SSL.
Może spróbuj debugowania takiego połączenia przez gdb lub strace,
i tam znajdziesz jakieś konkretne info o błędach.
Ale póki nie ma na pewno działającej konfiguracji, to masz dwukrotnie trudniejszą diagnozę.
Względnie ja bym tego OpenLDAPa przebudował że źródeł, jeśli ten z repo nie funguje jak powinien.
Sam OpenSSL też święty nie jest, ja pierwsze działające CA zbudowałem dopiero na Libressl-2.2,
bo na OpenSSL zawsze były jakieś problemy, dlatego rok się uczyłem zabawy z certyfikatami PKCS#12.
Od tego czasu mam w systemie:
~# openssl version LibreSSL 2.9.2
Może z resztą ldap kiepsko reaguje na certyfikaty zbudowane przez certtool (który używa Gnutls, nie Openssl).
Ostatnio edytowany przez Jacekalex (2019-07-16 09:50:58)
Offline
Więcej kientów... Nie zagłębiając się, po prostu nie ma zezwolenia na windows w tej dziedzinie i tyle.
Wygląda na to, że to nie jest problem stricte z certyfikatami na ten moment tylko z samym połączeniem do serwera. Coś jest nie tak w konfig, bo właczyłem nieszyfrowane połączyć i próbowałem się połączyć do ldapa i miałem ten sam błąd:
openssl s_client -connect odps03:636 CONNECTED(00000005) depth=1 CN = Przykładowa Firma verify error:num=19:self signed certificate in certificate chain --- Certificate chain 0 s:CN = odps03, O = Przykładowa Firma i:CN = Przykładowa Firma 1 s:CN = Przykładowa Firma i:CN = Przykładowa Firma
Szukam informacji co dokadnie znaczy ten błąd albo jak lepiej debugować:
ldap_err2string ldap_start_tls: Can't contact LDAP server (-1)
Niestety nie za bardzo rozumiem o co ci chodzi z połączeniem przez gdb lub strace,
Wszyscy wskazują ze to problem z wyłączona usługą abo nie otwartym portem, a u mnie i to i to działa poprawnie, dlatego szukam głębiej. Nie jestem z tych co byle problem pytają tylko raczej z tych co szukają aż się zesrają.
Ostatnio edytowany przez Krump (2019-07-17 14:40:40)
Offline