Bagaimana saya bisa mengunduh sertifikat AP nirkabel menggunakan 802.1X?

11

Sejauh yang saya mengerti, titik akses nirkabel menggunakan WPA-Enterprise (yaitu WPA plus 802.1X) dapat mengirim sertifikat kunci publik ke klien selama pengaturan koneksi. Klien dapat memverifikasi sertifikat ini untuk memastikan tidak terhubung ke AP jahat (mirip dengan validasi sertifikat di HTTPS).

Pertanyaan:

  • Apakah saya mengerti ini dengan benar?
  • Jika ya, apakah ada cara untuk mengunduh sertifikat AP? Idealnya, saya ingin solusi yang berfungsi di Linux.

Saya ingin mengunduh sertifikat yang ditandatangani sendiri, untuk menggunakannya untuk memverifikasi upaya koneksi berikutnya. Ini akan lebih sederhana daripada meminta file dari operator AP.

sleske
sumber
Saya tidak tahu alat khusus untuk mengunduh dan menyimpan sertifikat, tetapi itu muncul secara jelas, sehingga Anda dapat menangkapnya dengan Wireshark atau tcpdump. Saya sepertinya ingat melihat data cert dalam debug / verbose wpa_supplicant log, jadi Anda mungkin melihatnya juga. Salah satu dari pendekatan ini mungkin memerlukan sedikit data munging untuk mendapatkannya dari bentuk pcap / log ke file .cer X.509 yang tepat.
Spiff

Jawaban:

11

Ya, konfigurasi WPA-Enterprise paling umum menggunakan PEAP atau TTLS, keduanya menerapkan TLS lebih dari EAP lebih dari 802.1X.

Biasanya sertifikat sudah diterbitkan di suatu tempat oleh operator jaringan untuk tujuan ini. Itu bukan sesuatu yang harus diminta oleh pengguna.

Sayangnya, wpa_supplicant tidak memiliki opsi untuk membuang sertifikat bahkan dalam mode debug. (Saya akan memperbarui ini jika saya menemukan cara yang lebih baik.) Anda masih dapat memantau proses otentikasi EAPOL yang sebenarnya. Pertama, instal Wireshark.

Saat terputus, bawa antarmuka ke atas secara manual dan mulai menangkapnya:

$ sudo ip link set wlan0 up
$ wireshark -ki wlan0 &

Mulai wpa_supplicant dan segera Anda akan melihat jabat tangan TLS:

Server akan mengirim sertifikatnya segera setelah ServerHello. Pilih paket pertama seperti itu, lalu gali ke:

802.1X
└─Extensible Authentication Protocol
  └─Secure Sockets Layer
    └─Handshake Protocol: Certificatte
      └─Certificates

Klik kanan instance pertama "Sertifikat ( barang )" dan pilih "Ekspor byte paket terpilih". Wireshark akan menyimpannya sebagai file, dalam format DER biner. Ulangi ini untuk semua sertifikat lainnya. Yang paling atas (server RADIUS) memiliki informasi yang dapat Anda konfigurasikan altsubject_match; yang terakhir (root CA) harus diberikan kepada wpa_supplicant as ca_cert.

Sekarang Anda memiliki beberapa *.crtatau *.derfile dalam format DER biner. Konversikan ke format "teks" PEM:

openssl x509 -inform DER < mycert.der > mycert.pem

(Jika wpa_supplicant Anda menggunakan OpenSSL sebagai pengendali TLS, Anda harus memberinya sertifikat "root CA"; memberikannya sertifikat server tidak akan berfungsi.

Perhatikan bahwa sertifikat terakhir yang terlihat di Wireshark juga mungkin bukan CA root, tetapi hanya dikeluarkan oleh salah satu CA root di /etc/ssl/certsdirektori Anda ... Jika demikian, pastikan untuk mengaturnya domain_suffix_matchjuga - jika tidak, menggunakan CA publik tidak aman (802.1X sayangnya tidak tahu "hostname" apa yang harus diverifikasi, seperti HTTPS.)

pengguna1686
sumber
Terima kasih untuk luncuran lengkap. Kedengarannya agak rumit; tetapi jika itu cara paling sederhana untuk melakukannya, saya akan coba.
sleske
Ya itu benar-benar bekerja, saya sudah mengunduh EAP echange dengan tpcpdumptetapi bekerja seperti pesona. Lucu juga, stream saya hanya punya satu Server Hello, Certificate, ... entri
mTorres
Dalam contoh saya, pesan TLS terfragmentasi di beberapa paket EAP karena terlalu besar (terutama jika mengirim banyak sertifikat RSA besar). Meskipun demikian, selalu hanya satu Server TLS total.
user1686
Tolong bersamaku jika saya mengatakan sesuatu yang salah. Kebutuhan untuk kegiatan tersebut adalah mengunduh sertifikat dan menerapkannya pada perangkat yang tidak memungkinkan mengunduh dan menerima sertifikat pada koneksi pertama.
Mauro