Saya sudah mencoba untuk mendapatkan koneksi SSL ke server LDAPS (Active Directory) agar berfungsi, tetapi tetap mengalami masalah. Saya mencoba menggunakan ini:
openssl s_client -connect the.server.edu:3269
Dengan hasil sebagai berikut:
verify error:num=20:unable to get local issuer certificate
Saya pikir, OK, baik server server produksi lama beberapa tahun. Mungkin CA tidak ada. Saya kemudian menarik sertifikat dari output ke file pem dan mencoba:
openssl s_client -CAfile mycert.pem -connect the.server.edu:3269
Dan itu juga tidak berhasil.
Apa yang saya lewatkan? Bukankah seharusnya SELALU bekerja?
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE,'./ca_issuer_cert.pem')
Setelah ini, saya dapat menggunakan STARTTLS (dalam port LDAP 389) seperti yang diharapkan.Jawaban:
Jadi ini yang saya lihat sebagai nama sertifikat CA:
Itu adalah nama sertifikat yang saya impor setelah saya melakukan -showcerts pada percobaan kedua saya di atas. Saya mendaftarkan sertifikat di keystore dengan melakukan ini:
Saya melihat sertifikat CA di sana.
Untuk memastikan bahwa openssl menggunakan keystore yang saya gunakan dengan server, saya menggunakan argumen -CAfile:
Mengetahui bahwa java keystore untuk CA's memiliki kata sandi, saya mencoba menggunakan opsi-pass pass: kata sandi seperti ini:
tapi itu juga tidak berhasil.
Apa yang lucu tentang itu adalah bahwa file cacerts memiliki kata sandi di atasnya dan openssl tidak mengeluh bahwa ia tidak dapat membaca file cacerts. Bagi saya itu agak mencurigakan. Apakah itu atau apa pun membunyikan lonceng?
sumber
Kesalahan itu adalah cara opensl untuk mengatakan, "Saya tidak bisa mengikuti rantai sertifikat ke akar tepercaya". Saya hanya melakukan perintah yang sama ke server AD saya sendiri dan saya mendapatkan rantai sertifikat lengkap, tetapi sertifikat teratas memiliki kesalahan yang sama persis. Jika Anda memiliki kunci-pub CA yang menandatangani sertifikat, Anda dapat menentukannya dengan opsi
-CAfile
atau-CApath
sumber
Jika Anda menggunakan OpenLDAP, Anda dapat mengatur:
di
openldap.conf
file Anda , yang memerintahkan OpenLDAP untuk tidak mencoba verifikasi sertifikat. Ada opsi serupa jika Anda melakukan otentikasi LDAP dengan Apache.Jika Anda benar-benar ingin melakukan verifikasi sertifikat, berikut ini dapat membantu:
Saya kira tidak. Meskipun yang berikut ini mungkin terdengar pasti, itu benar-benar hanya tamu terbaik saya:
Apa yang Anda coba hanya akan berfungsi untuk sertifikat yang ditandatangani sendiri. Karena sertifikat itu sebenarnya dikeluarkan oleh Windows CA, berusaha menggunakan sertifikat server sebagai argumen untuk
-CAfile
tidak akan memberi Anda apa-apa.Tidak harus, tidak. Tidak ada jaminan bahwa server jauh menyajikan sertifikat CA dalam outputnya. Anda harus terlebih dahulu melihat penerbit sertifikat server:
... lalu lihat apakah salah satu dari sertifikat lain yang Anda miliki cocok dengan penerbit itu.
sumber