Làm cách nào tôi có thể tải xuống chứng chỉ của AP không dây bằng cách sử dụng 802.1X?


11

Theo tôi hiểu, các điểm truy cập không dây sử dụng WPA-Enterprise (tức là WPA cộng với 802.1X) có thể gửi chứng chỉ khóa chung cho khách hàng trong quá trình thiết lập kết nối. Khách hàng có thể xác minh chứng chỉ này để đảm bảo rằng nó không kết nối với AP giả mạo (tương tự như xác thực chứng chỉ trong HTTPS).

Câu hỏi:

  • Tôi đã hiểu điều này một cách chính xác?
  • Nếu có, có cách nào để tải chứng chỉ AP không? Lý tưởng nhất, tôi muốn một giải pháp hoạt động trong Linux.

Tôi muốn tải xuống một chứng chỉ tự ký, để sử dụng nó để xác minh các lần thử kết nối tiếp theo. Điều này sẽ đơn giản hơn là yêu cầu người vận hành AP cho một tệp.


Tôi không biết một công cụ đặc biệt để tải xuống và lưu chứng chỉ, nhưng nó xuất hiện rõ ràng, vì vậy bạn có thể chụp nó với Wireshark hoặc tcpdump. Tôi dường như nhớ lại việc nhìn thấy dữ liệu chứng chỉ trong nhật ký gỡ lỗi / verbose wpa_supplicant, vì vậy bạn cũng có thể xem xét điều đó. Một trong hai cách tiếp cận này có thể yêu cầu một chút dữ liệu được trộn để lấy từ dạng pcap / log sang tệp X.509 .cer thích hợp.
Spiff

Câu trả lời:


11

Có, các cấu hình WPA-Enterprise phổ biến nhất sử dụng PEAP hoặc TTLS, cả hai đều thực hiện TLS trên EAP trên 802.1X.

Thông thường chứng chỉ đã được xuất bản ở đâu đó bởi các nhà khai thác mạng cho chính xác mục đích này. Đó không phải là thứ mà người dùng nên yêu cầu .

Đáng buồn thay, wpa_supplicant không có tùy chọn để đổ chứng chỉ ngay cả trong chế độ gỡ lỗi. (Tôi sẽ cập nhật điều này nếu tôi tìm thấy một cách tốt hơn.) Tuy nhiên, bạn vẫn có thể theo dõi quá trình xác thực EAPOL thực tế. Đầu tiên, cài đặt Wireshark.

Trong khi ngắt kết nối, hãy đưa giao diện lên một cách thủ công và bắt đầu chụp trên đó:

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

Bắt đầu wpa_supplicant và bạn sẽ sớm thấy bắt tay TLS:

Máy chủ sẽ gửi chứng chỉ của nó ngay sau ServerHello. Chọn gói đầu tiên như vậy, sau đó đào sâu vào:

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

Nhấp chuột phải vào phiên bản đầu tiên của "Chứng chỉ ( công cụ )" và chọn "Xuất byte gói được chọn". Wireshark sẽ lưu nó dưới dạng tệp, ở định dạng DER nhị phân. Lặp lại điều này cho tất cả các chứng chỉ khác. Phần trên cùng (máy chủ RADIUS) có thông tin mà bạn có thể định cấu hình altsubject_match; cái cuối cùng (CA gốc) nên được trao cho wpa_supplicant là ca_cert.

Bây giờ bạn có một vài *.crthoặc *.dertệp ở định dạng DER nhị phân. Chuyển đổi chúng sang định dạng "văn bản" PEM:

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

(Nếu wpa_supplicant của bạn đang sử dụng OpenSSL làm trình xử lý TLS, bạn phải cung cấp cho nó chứng chỉ "CA gốc"; chứng chỉ của máy chủ sẽ không hoạt động.

Lưu ý rằng cũng có thể chứng chỉ cuối cùng nhìn thấy trong Wireshark sẽ không phải là CA gốc, mà chỉ được cấp bởi một trong các CA gốc trong /etc/ssl/certsthư mục của bạn ... Nếu đó là trường hợp, hãy chắc chắn đặt domain_suffix_matchcả - nếu không, sử dụng CA công cộng sẽ không an toàn (rất tiếc, không may là không biết "tên máy chủ" để xác minh, ví dụ như HTTPS sẽ làm gì.)


Cảm ơn đã viết chi tiết. Nghe có vẻ hơi phức tạp; Nhưng nếu đó là cách đơn giản nhất để làm điều đó, tôi sẽ thử.
sleske

Yup nó thực sự hoạt động, tôi đã tải xuống EAP echange tpcpdumpnhưng hoạt động như một bùa mê. Mặc dù buồn cười, luồng của tôi chỉ có một Máy chủ Xin chào, Chứng chỉ, ... mục nhập
mTorres

Trong ví dụ của tôi, thông báo TLS bị phân mảnh trên nhiều gói EAP vì nó quá lớn (đặc biệt là nếu nó gửi một loạt các chứng chỉ RSA lớn). Mặc dù vậy, nó luôn luôn chỉ có một TLS ServerHello.
dùng1686

Hãy chịu đựng tôi nếu tôi nói điều gì đó không chính xác. Nhu cầu cho hoạt động đó là tải xuống chứng chỉ và áp dụng nó trên các thiết bị không cho phép tải xuống và chấp nhận chứng chỉ ở kết nối đầu tiên.
Mauro
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.