Saya mencoba untuk mendapatkan sertifikat SSL / TLS untuk salah satu penyeimbang beban kami (Netscaler) menggunakan:
openssl s_client -showcerts -connect lb.example.com:443
Tapi itu tidak akan menunjukkan kepada saya sertifikat:
CONNECTED(00000003)
write:errno=54
Penggunaan -servername lb.example.com
tidak membantu, dan sysadmin kami memberi tahu saya bahwa penyeimbang beban kami tidak menggunakan SNI.
Sunting : Server ada di intranet kami dan tidak menerima koneksi dari internet publik. Ini adalah output dari openssl dengan -debug
:
CONNECTED(00000003)
write to 0x7fec7af0abf0 [0x7fec7b803a00] (130 bytes => 130 (0x82))
0000 - 80 80 01 03 01 00 57 00-00 00 20 00 00 39 00 00 ......W... ..9..
0010 - 38 00 00 35 00 00 16 00-00 13 00 00 0a 07 00 c0 8..5............
0020 - 00 00 33 00 00 32 00 00-2f 00 00 9a 00 00 99 00 ..3..2../.......
0030 - 00 96 03 00 80 00 00 05-00 00 04 01 00 80 00 00 ................
0040 - 15 00 00 12 00 00 09 06-00 40 00 00 14 00 00 11 .........@......
0050 - 00 00 08 00 00 06 04 00-80 00 00 03 02 00 80 00 ................
0060 - 00 ff a6 f7 27 1a a7 18-85 cf b2 03 22 fc 48 3d ....'.......".H=
0070 - dd a9 2c b7 76 67 62 80-df 85 ed 48 35 c7 d4 87 ..,.vgb....H5...
0080 - 8d d3 ..
read from 0x7fec7af0abf0 [0x7fec7b809000] (7 bytes => -1 (0xFFFFFFFFFFFFFFFF))
write:errno=54
Dan ini adalah output yang relevan dari curl -v https://lb.example.com/
:
$ curl -vI https://lb.exmple.com/
* Trying 1.2.3.4...
* Connected to lb.exmple.com (10.1.2.3) port 443 (#0)
* TLS 1.2 connection using TLS_RSA_WITH_AES_256_CBC_SHA
* Server certificate: lb.example.com
* Server certificate: RapidSSL SHA256 CA - G2
* Server certificate: GeoTrust Primary Certification Authority - G3
> HEAD / HTTP/1.1
> Host: lb.exmple.com
> User-Agent: curl/7.43.0
> Accept: */*
>
Adakah saran tentang bagaimana saya dapat memperoleh sertifikat menggunakan openssl s_client
?
ssl
certificate
https
openssl
Daniel Serodio
sumber
sumber
-debug
) ke pertanyaan Anda.Jawaban:
Setelah beberapa saat saya menemukan jawabannya: load balancer ini dikonfigurasikan untuk hanya menggunakan TLSv1.2, yang versi openssl yang termasuk dalam OS X (0.9.8) tidak mengerti. Saya menginstal versi openssl yang lebih baru (> = 1.0.1) menggunakan homebrew sehingga ini berfungsi:
sumber
Jika ini merupakan konfigurasi modern (beberapa tangan mengabaikan apa artinya), gunakan:
Sepertinya ada beberapa mukadimah tambahan pada byte 0 dan 1. Pada byte 2, harus ada tipe catatan. Pada byte 3 dan 4 harus ada nomor versi. Bytes 5 dan 6 harus berukuran 16-bit dari payload.
Berikut ini contoh kerjanya:
Dari atas, tipe catatan berada di posisi 0, dan nilainya 0x16. 0x16 adalah jenis jabat tangan. Versi record layer adalah dua byte berikutnya pada posisi 2 dan 3. Nilainya adalah
0x03 0x01
. Panjang payload adalah0x007f
.Juga lihat RFC 5246, Protokol Transport Layer Security (TLS) Versi 1.2 , halaman 18:
Masalah Anda bisa menjadi tipe catatan yang kompatibel dengan SSLv2. Atau bisa juga versi OpenSSL dari bawah, katakan 0.9.5 atau 0.9.8. Sulit dikatakan, dan kita mungkin memerlukan lebih banyak informasi.
Informasi lebih lanjut akan mencakup OS; Versi OpenSSL; jika Anda mencoba mengganti versi platform OpenSSL dengan versi OpenSSL Anda sendiri; jika ada kotak firewall atau "web inspect" atau barang middleware lain yang sedang berjalan; dan apa yang diterima server.
Ini terdengar agak tidak biasa. Tetapi ini merupakan ekstensi untuk TLS, jadi diabaikan jika tidak digunakan (dan tidak akan menghasilkan peringatan fatal).
Aturan praktis di 2016: selalu menggunakan TLS 1.0 atau lebih tinggi, dan selalu menggunakan SNI.
sumber