วิธีทำให้ ldapsearch ทำงานบน SLES บน tls โดยใช้ใบรับรองได้อย่างไร


12

เราจำเป็นต้องเชื่อมต่อสคริปต์ php ของเรากับ LDAP ผ่าน tls โดยใช้ใบรับรอง การเชื่อมต่อ LDAP ใช้งานได้ดีโดยไม่มี tls รายละเอียดเพิ่มเติมที่นี่/programming/15260252/how-to-use-multiple-tls-certificates-for-ldap-from-php-zend

เราจัดการเชื่อมต่อผ่าน tls จาก Windows โดยใช้ Softerra LDAP Browser มันขอให้เราติดตั้งใบรับรองและไม่ว่าเราจะเชื่อถือ

ผลลัพธ์สุดท้ายของฉันคือสามารถรับรองความถูกต้องกับ LDAP โดยใช้ TLS จาก php ฉันได้รับใบรับรองประเภท. cer มันมาจากเครื่อง Windows Exchange จากสิ่งที่ฉันเห็น SLES รองรับใบรับรอง. pem ดังนั้นคำถามของฉันคือ ...

คำถามที่ 1: ฉันจำเป็นต้องแปลงจาก. cer เป็น. pemก่อนที่ฉันจะสามารถติดตั้งใบรับรองบนไคลเอนต์ (ซึ่งเป็นเซิร์ฟเวอร์ SLES) และในที่สุดQ2: วิธีที่ดีที่สุดในการติดตั้งใบรับรองนี้บนเซิร์ฟเวอร์คืออะไร เข้าถึงและใช้งานได้ โปรดทราบว่าบนเซิร์ฟเวอร์ SLES เราจำเป็นต้องเชื่อมต่อกับเซิร์ฟเวอร์ LDAP อื่น

ในปัจจุบันถ้าเราวิ่ง

ldapsearch -H ldaps://localhost:9215 -W

เราได้รับ

Enter LDAP Password: 
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed (unable to get local issuer certificate)

ฉันพบข้อมูลที่ดีมากมายที่นี่http://www.php.net/manual/de/function.ldap-connect.php#36156และโดยเฉพาะอย่างยิ่งประโยคนี้มีความสำคัญต่อสายตาของฉันOnce you've gotten the ldapsearch tool working correctly PHP should work also.


  • SUSE Linux Enterprise Server 11 (x86_64)
  • ldapsearch: @ (#) $ OpenLDAP: ldapsearch 2.4.26 (26 ก.ย. 2555 13:14:42) $ abuild @ baur: /usr/src/packages/BUILD/openldap-2.4.26/clients/tools (ไลบรารี LDAP: OpenLDAP 20426)

อีกวิธีหนึ่งในการดีบักคือละเว้นส่วนของ LDAP และดูที่ SSL: คุณสามารถเรียกใช้ "openssl s_client -connect localhost: 9215" เพื่อแยกใบรับรองที่เซิร์ฟเวอร์ใช้และผลการตรวจสอบความถูกต้อง
โคว

ตกลง. ฉันจะส่งต่อไปยังผู้พัฒนา ฉันเองก็ยังไม่เข้าใจว่าฉันติดตั้งใบรับรองอย่างไรและมีการเชื่อมโยงกับเซิร์ฟเวอร์เมื่อฉันต้องการเข้าถึง
Radek

คำตอบ:


25

นั่นหมายความว่าใบรับรองบนเซิร์ฟเวอร์หมดอายุหรือไม่ถูกต้อง

สำหรับวิธีแก้ปัญหาให้ใช้LDAPTLS_REQCERTตัวแปรเพื่อเพิกเฉยใบรับรองเช่น:

LDAPTLS_REQCERT=never ldapsearch -D "cn=drupal-test,ou=Services,dc=example,dc=com" -w my_pass -h ldap.example.com -b "ou=People,dc=example,dc=com" -s sub -x -ZZ "(uid=admin)"

มิฉะนั้นคุณสามารถนำเข้าใบรับรองและทำเครื่องหมายว่าเชื่อถือได้


ทำงานบน cygwin ด้วยโดยที่ไม่มีldap.confไฟล์ที่มีอยู่เพื่อตั้งค่าTLS_REQCERTพารามิเตอร์
bvj

8

ฉันไม่แน่ใจเกี่ยวกับการแปลงจาก pem เป็น cer แต่เพื่อให้ ldapsearch ใช้ certs โดยไม่มี ldap.conf หรือไม่มีสิทธิ์ในการแก้ไข certs ทั่วโลกคุณควรทำสิ่งนี้:

env LDAPTLS_CACERT=/path/to/cert ldapsearch

1

การใช้

LDAPTLS_REQCERT=never

ลบการตรวจสอบใบรับรองของเซิร์ฟเวอร์ LDAP วิธีนี้จะทำให้การรักษาความปลอดภัยที่ TLS จัดทำมีให้เป็นที่แรก อย่าทำอย่างนี้ คุณควรแก้ไขใบรับรองหากมีปัญหาและให้สิทธิ์ผู้ออกใบรับรองกับไคลเอ็นต์ LDAP ตามที่อธิบายโดยทิงก์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.