Próbowałem uzyskać połączenie SSL z serwerem LDAPS (Active Directory), ale nadal mam problemy. Próbowałem użyć tego:
openssl s_client -connect the.server.edu:3269
Z następującym wynikiem:
verify error:num=20:unable to get local issuer certificate
Pomyślałem, OK, no cóż, serwer to stary serwer produkcyjny kilka lat. Może CA nie jest obecny. Następnie wyciągnąłem certyfikat z pliku wyjściowego do pliku pem i próbowałem:
openssl s_client -CAfile mycert.pem -connect the.server.edu:3269
I to też nie działało.
czego mi brakuje? Czy to nie powinno ZAWSZE działać?
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,'./ca_issuer_cert.pem')
Po tym byłem w stanie używać STARTTLS (na porcie LDAP 389) zgodnie z oczekiwaniami.Odpowiedzi:
Oto co widzę jako nazwę certyfikatu CA:
To była nazwa certyfikatu, który zaimportowałem po przeprowadzeniu -showcerts w mojej drugiej próbie powyżej. Wymieniłem certyfikaty w magazynie kluczy, wykonując następujące czynności:
Widzę tam certyfikat CA.
Aby upewnić się, że openssl korzysta z magazynu kluczy, którego używam z serwerem, używam argumentu -CAfile:
Wiedząc, że magazyn kluczy Java dla CA ma hasło, próbowałem użyć opcji -pass pass: password w następujący sposób:
ale to też nie działało.
Zabawne jest to, że plik cacerts ma hasło i openssl nie narzeka, że nie może odczytać pliku cacerts. To wydaje mi się podejrzane. Czy to czy coś jeszcze dzwoni dzwonkiem?
źródło
Ten błąd to sposób, w jaki openssl mówi: „Nie mogę podążać za łańcuchem certyfikatów do zaufanego katalogu głównego”. Właśnie wykonałem to samo polecenie na moich własnych serwerach AD i otrzymuję pełny łańcuch certyfikatów, ale najwyższy certyfikat zawiera dokładnie ten błąd. Jeśli masz klucz publikacji urzędu certyfikacji, który podpisał certyfikat, możesz go określić za pomocą opcji
-CAfile
lub-CApath
źródło
Jeśli korzystasz z OpenLDAP, możesz ustawić:
w
openldap.conf
pliku, który instruuje OpenLDAP, aby nie próbował weryfikować certyfikatu. Jest podobna opcja, jeśli wykonujesz uwierzytelnianie LDAP za pomocą Apache.Jeśli naprawdę chcesz przeprowadzić weryfikację certyfikatu, pomocne mogą być:
Nie wydaje mi się Chociaż poniższe brzmienie może wydawać się ostateczne, to tak naprawdę mój najlepszy gość:
To, co próbowałeś, działałoby tylko w przypadku certyfikatu z podpisem własnym. Ponieważ certyfikat został faktycznie wydany przez urząd certyfikacji systemu Windows, próba użycia certyfikatu serwera jako argumentu,
-CAfile
że nic ci nie da.Niekoniecznie nie. Nie ma gwarancji, że zdalny serwer przedstawi certyfikat CA na swoim wyjściu. Najpierw spójrz na wystawcę certyfikatu serwera:
... a następnie sprawdź, czy jeden z pozostałych certyfikatów jest zgodny z tym wystawcą.
źródło