OpenVPN tls-ciphersuites vs tls-version-min: apa yang ditegakkan masing-masing
Daftar suite TLS 1.3 tidak membatasi versi protokol, dan show-tls hanya menampilkan dukungan lokal. Periksa kebijakan, suite, dan hasil negosiasi secara terpisah.
Tiga fakta berbeda dilebur menjadi satu baris dalam sebagian besar diskusi OpenVPN TLS: apa yang bisa dilakukan build klien Anda, apa yang diizinkan profil, dan apa yang sebenarnya dinegosiasikan sesi. Daftar suite TLS 1.3 yang pendek hanya menjawab separuh pertanyaan tengah, dan tidak mengatakan apa pun tentang batas bawah versi protokol. Jalankan pemeriksaan di bawah ini secara berurutan dan berhenti pada yang pertama tidak berlaku, karena setiap pemeriksaan berikutnya mengasumsikan yang sebelumnya sudah beres.
Periksa build sebelum membaca daftar apa pun
Direktif konfigurasi tidak dapat menambahkan dukungan protokol ke biner yang tidak memilikinya. Mulailah dengan banner versi, yang menyebutkan pustaka kripto hasil kompilasi:
openvpn --version
Build 2.6 yang ditautkan dengan OpenSSL menerima tls-cipher maupun tls-ciphersuites. Build dengan mbed TLS tidak memiliki pemilihan suite TLS 1.3 sama sekali, dan manual 2.6 menandai tls-ciphersuites sebagai opsi OpenSSL. Jika server dibangun ulang dengan backend lain, profil yang sama dapat mengubah perilakunya tanpa satu baris konfigurasi pun berubah.
Selagi di sini, jalankan openvpn --show-tls dan simpan keluarannya. Itulah inventaris yang akan Anda bandingkan nanti, dan murah untuk menangkapnya sebelum siapa pun mulai menyunting profil.
Tulis banner dan daftar itu ke tiket perubahan, bukan ke jendela obrolan. Ketika dua orang berselisih apakah klien bisa menawarkan suite dalam enam minggu, keluaran yang tertangkap menyelesaikannya dalam satu baris.
Pisahkan batas versi dari daftar cipher
Di manual 2.6 ini ada tiga kendali, bukan satu:
tls-ciphermenetapkan kebijakan cipher untuk TLS 1.2 dan yang lebih lama, dan diteruskan ke daftar cipher OpenSSL;tls-ciphersuitesmemilih suite TLS 1.3;tls-version-mindantls-version-maxmembatasi versi protokol yang boleh digunakan koneksi.
Jadi daftar suite TLS 1.3 yang dipangkas dengan cermat tidak membuktikan apa pun tentang versi lama yang masih diizinkan. Jika persyaratannya «hanya TLS 1.3», batas bawah versi yang menopangnya, dan daftar suite hanya mempersempit pilihan di dalam batas itu:
tls-version-min 1.3
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
Pasangan itu melakukan dua tugas. Menghapus salah satu baris membuat yang lain menegakkan lebih sedikit dari yang Anda kira, dan itulah kegagalan yang menjadi alasan seluruh pemeriksaan ini ada.
Kanal data adalah kendali keempat. data-ciphers menegosiasikan cipher simetris di dalam terowongan, dan hasilnya tidak mengatakan apa pun tentang versi TLS kanal kendali. Melihat AES-256-GCM di ringkasan sesi bukan bukti tentang TLS 1.3 ke arah mana pun.
Baca show-tls sebagai inventaris lokal
--show-tls menghitung suite yang didukung pustaka kripto yang ditautkan ke biner ini, dalam urutan preferensi. Ini bukan laporan dari gateway. Manual menyatakan secara eksplisit bahwa daftar itu berasal dari pustaka lokal, yang berarti laptop dengan OpenSSL 3.x dan router dengan build lebih lama akan mencetak daftar berbeda saat berbicara dengan server yang sama.
| Evidence | What it actually describes |
|---|---|
--show-tls output | Capabilities of this client build and its library |
| Profile directives | What this attempt is allowed to offer |
| Session log line | What this one negotiation selected |
Misalkan klien mendukung suite A, B, dan C dan satu sesi memilih B. Itu tidak menetapkan apa pun tentang apakah server mengizinkan A atau C, maupun apakah B satu-satunya pilihan yang diizinkan. Pisahkan ketiga baris, dan sebagian besar utas TLS yang membingungkan akan selesai dengan sendirinya.
Inventaris tetap layak disimpan. Ketika sesi gagal, membandingkan daftar pustaka dengan daftar profil memberi tahu Anda apakah klien punya peluang menawarkan apa yang diinginkan server. Itu juga menunjukkan apakah perubahan backend diam-diam menghapus TLS_CHACHA20_POLY1305_SHA256 dari kumpulan yang diandalkan klien lama — jenis regresi yang muncul sebagai segelintir pengguna yang gagal terhubung sementara semua orang tidak menyadari apa pun.
Tanyakan kepada gateway sesuatu yang bisa dijawabnya
Jika Anda mengelola layanan, periksa konfigurasi efektif instans yang berjalan, bukan berkas di disk. OpenVPN mungkin dijalankan dengan jalur --config lain, mungkin menarik include, dan mungkin belum dimulai ulang sejak penyuntingan. Kebijakan daemon yang berjalan itulah yang ditemui klien.
Jika Anda tidak mengelolanya, mintalah persyaratan klien yang didukung atau uji penerimaan yang terbatas kepada operator. Upaya yang ditolak bukan otomatis suite yang ditolak: batas bawah versi, pemeriksaan identitas sertifikat seperti remote-cert-tls, atau ketidakcocokan antara tls-auth dan tls-crypt dapat mengakhiri pertukaran sebelum pemilihan suite menjadi penting. Baca galat server sebelum mengubah daftar klien, karena «handshake failed» mencakup empat penyebab berbeda dan hanya satu di antaranya ketidakcocokan cipher.
Mengarahkan openssl s_client ke port VPN juga tidak mereproduksi pertanyaannya. Kanal kendali berjalan di dalam bingkai OpenVPN sendiri, jadi probe TLS mentah menguji protokol lain pada port yang mengharapkan hal lain. Kesimpulan apa pun darinya adalah tentang probe, bukan tentang terowongan.
Catat dua hasil dan pisahkan keduanya
Sesi yang diizinkan dan baru menghasilkan satu baris kanal kendali yang menyebutkan versi protokol dan cipher yang dipilih, serta satu baris kanal data terpisah yang menyebutkan cipher terowongan. Tangkap keduanya bersama versi klien dan nama profil, dan catat instans server mana yang menjawab:
openvpn --config office.ovpn --verb 4 2>&1 | tee session.txt
Lalu bacalah kedua baris itu dari berkas itu, bukan dari ingatan. Pasangan itulah buktinya; nama suite saja adalah preferensi, dan batas versi adalah pernyataan terpisah tentang apa yang ditolak server.
Lakukan pemeriksaan dalam urutan ini. Konfirmasi build dan backend dengan --version. Tangkap --show-tls sebelum mengubah apa pun. Nyatakan batas bawah versi yang diperlukan terpisah dari daftar suite. Konfirmasi kebijakan efektif instans yang berjalan dengan pemiliknya. Amati satu sesi yang diizinkan dan, jika rencana memungkinkan, satu upaya versi lama yang ditolak. Catat hasil kanal kendali dan kanal data sebagai temuan terpisah.
Jika klien yang diwajibkan tidak dapat memenuhi minimum baru, ambil keputusan migrasi atau pengecualian itu secara eksplisit alih-alih diam-diam menurunkan aturan penerimaan yang tidak terkait agar peluncuran terlihat selesai.