Saya berusaha sangat gagal menggunakan TunnelBlick
(klien OS / X OpenVPN 2.2.1 yang dikenal baik) untuk terhubung menggunakan sertifikat. Berikut adalah pesan kesalahan (dibersihkan) yang saya terima:
2012-01-11 11:18:26 TLS: Paket awal dari **. **. **. **: 1194, sid = 17a4a801 5012e004 2012-01-11 11:18:26 KESALAHAN VERIFIKASI: kedalaman = 1, kesalahan = sertifikat yang ditandatangani sendiri dalam rantai sertifikat: / C = US / ST = ** / L = ** / O = ** / O = ** / CN = ** / emailAddress = ** 2012-01-11 11:18:26 TLS_ERROR: BIO membaca kesalahan tls_read_plaintext: error: 14090086: rutinitas SSL: SSL3_GET_SERVER_CERTIFICATE: verifikasi sertifikat gagal 2012-01-11 11:18:26 Kesalahan TLS: objek TLS -> kesalahan baca plaintext yang masuk 2012-01-11 11:18:26 Kesalahan TLS: Jabat tangan TLS gagal 2012-01-11 11:18:26 TCP / UDP: Closing socket
Sekarang, ini intinya. Saya membuat CSR sendiri untuk meminta sertifikat ini, menggunakan file ca.crt yang diberikan kepada saya oleh pihak lain (sebenarnya, mereka melakukannya dua kali hanya untuk memastikan).
Entri yang relevan dalam konfigurasi klien adalah:
ca ca.crt
cert my.crt
key my.key
dan, selanjutnya ... Saya dapat memverifikasi kunci dengan cara ini:
openssl memverifikasi -CAfile ca.crt my.crt
my.crt: OK
Oke, jadi sekarang saya benar-benar bingung dan bingung. Pada titik ini, saya tahu bahwa CSR dan kunci dihasilkan menggunakan CSR yang tepat. Sebenarnya, inilah perintah yang melakukannya:
openssl req -newkey rsa:2048 -new -out my.csr -keyout my.key
Saya juga tahu untuk melakukan ini:
openssl x509 -subject -issuer -noout -in ca.crt
...
(berkedip!)
Apakah saya baru saja menemukannya ?
Output dari perintah itu terlihat seperti ini: (agak diedit)
subject = / C = US / ST = VA / L = ** / O = ** / CN = ** CA / emailAddress = ** penerbit = (sama)
sedangkan dalam pesan kesalahan dari OpenVPN, ST = tidak persis sama:
KESALAHAN VERIFIKASI: kedalaman = 1, kesalahan = sertifikat yang ditandatangani sendiri dalam rantai sertifikat: / C = AS / ST = Virginia / L = ** / O = ** / CN = ** / emailAddress = **
"VA" tidak persis sama dengan "Virginia."
openssl s_client -connect host:port -showcerts
, dan bandingkan cap jempol dari sertifikat yang diterimaopenssl x509 -noout -text -in ca.crt
.Jawaban:
Hanya untuk memberikan penutupan penuh pada utas ini: bahwa memang itulah masalahnya. "Ca.crt" yang telah saya terima ("Virginia") BUKAN sebenarnya yang digunakan rekan saya ("VA"), dan tidak ada di antara kami yang memperhatikan saat itu.
Jadi ... pada dasarnya (dan murni dalam istilah awam) VPN mencoba berjalan-jalan menaiki rantai otoritas mencari ca.crt yang diharapkan ditemukan, tetapi tidak pernah berhasil (karena tidak ada di sana).
Dan, ini adalah salah satu pesan indah yang sistem crypto sangat terkenal: sepenuhnya akurat, namun, sepenuhnya misterius bagi yang belum tahu. (Dan, jujur saja, sistem crypto tidak suka membocorkan informasi tentang apa pun, karena mereka menganggap orang yang mereka ajak bicara pasti jahat Hawa , bukan Alice atau Bob yang baik.)
sumber