iOS đã từ chối tunnel strongSwan của bạn: so sánh các đề xuất IKE
Một địa chỉ hoạt động và chứng chỉ hợp lệ vẫn có thể thua cuộc thương lượng. So sánh các dòng ike và esp với những gì điện thoại chấp nhận.
Không có gì trong chứng chỉ hay địa chỉ giải thích vì sao một chiếc iPhone từng kết nối với strongSwan năm ngoái lại thất bại năm nay. Không có gì ở địa chỉ, khóa chia sẻ trước hay danh tính của máy khách buộc phải thay đổi. Thứ đã dịch chuyển là danh sách các phép biến đổi mà máy khách tích hợp của điện thoại sẵn sàng thương lượng, và khi danh sách đó thôi trùng với danh sách của máy chủ, quá trình trao đổi kết thúc trước khi danh tính của bất kỳ ai được xem xét.
Dòng nhật ký quyết định điều đó
Tăng mức ghi nhật ký cho kết nối đó và tìm hai mục quyết định kết quả: điện thoại đã đề nghị gì và máy chủ đã chọn gì. Nếu nhật ký kết thúc mà không có đề xuất nào được chọn và báo rằng không có gì khớp, thì việc xác thực chưa từng được thử. Một chứng chỉ mới và một mật khẩu mới không thay đổi gì ở điểm đó, vì cả hai đều được dùng ở giai đoạn sau. Không cái nào có thể ảnh hưởng đến kết quả đã được quyết định trước khi danh tính được xem xét.
Tách hai dạng lỗi ra trước khi sửa bất cứ thứ gì. Không chỉnh sửa phép biến đổi nào cứu được thông tin đăng nhập bị từ chối, và không sửa thông tin đăng nhập nào cứu được phép biến đổi bị từ chối. Mục nhật ký nêu tên một đề xuất được chọn cho bạn biết bạn đang ở dạng nào trong hai. Không có mục đó, bạn đang đoán.
Dòng được chọn nêu tên đề xuất theo tập biến đổi của nó chứ không theo một nhãn thân thiện. So sánh các trường mã hóa, toàn vẹn và nhóm trong dòng đó với danh sách điện thoại đã gửi, vì chỉ một trường lệch là đủ để thua.
Điều gì đã thay đổi trên điện thoại
Một bản iOS đã cắt bớt các thuật toán mà máy khách của nó sẵn sàng dùng. Hash toàn vẹn yếu, nhóm Diffie-Hellman nhỏ và các đề xuất liệt kê tùy chọn cũ trước đã không còn được chấp nhận.
Danh sách dài hơn không an toàn hơn ở đây. Việc chọn tuân theo tập được chấp nhận của điện thoại và thứ tự ưu tiên riêng của nó, nên một máy chủ quảng cáo danh mục rộng vẫn có thể thua thương lượng khi các mục hiện đại không phải là những mục được chọn. Hãy ưu tiên danh sách ngắn với các mục hiện đại ở đầu. Một danh sách dài mở bằng các tùy chọn cũ mời gọi đúng cái lỗi bạn đang cố tránh. Tập được chấp nhận là một ràng buộc bên ngoài dịch chuyển mỗi khi máy khách cập nhật, nên một cấu hình chạy được hôm qua là bằng chứng về hôm qua.
Một cặp vẫn thương lượng được
Với điện thoại hiện nay, một tổ hợp hiện đại là đủ. Một cặp thương lượng được trông như sau:
ike=aes256-sha2_256-modp2048
esp=aes256-sha2_256
Dòng ike mang mã hóa, toàn vẹn và nhóm Diffie-Hellman được dùng trong khi quá trình trao đổi khóa diễn ra. Dòng esp chỉ bao phủ kênh dữ liệu, vì nhóm đã được quyết định trước khi nó áp dụng. Nạp lại kết nối hoặc khởi động lại daemon, rồi kết nối lại điện thoại. Chỉ giữ giá trị nhóm đó nếu mọi máy khách bạn phục vụ vẫn chấp nhận nó, và đừng mở rộng đề xuất cho tất cả chỉ vì một đối tác cũ cần nhiều hơn.
Ba nơi để sửa, một nơi thường đóng
- Một đề xuất hiện đại cho mỗi đối tác. Đúng khi mọi máy khách đều là điện thoại và máy để bàn hiện nay. Nó xóa các phép biến đổi cũ thay vì thương lượng quanh chúng.
- Định nghĩa kết nối thứ hai cho máy khách Apple. Giữ một đối tác cũ sống và cho điện thoại một đề xuất mà nó chấp nhận. Việc này tốn thêm một khối kết nối và làm ngoại lệ trở nên hữu hình.
- Thay đổi máy khách. Hiếm khi mở với bạn: khi một hệ thống quản lý hoặc ứng dụng phân phối hồ sơ, không có trình sửa đề xuất nào để chạm vào, và máy khách tích hợp cũng không phơi ra cái nào.
Chọn phương án thứ hai khi một thiết bị ngoài tầm kiểm soát của bạn không thể cập nhật. Chọn phương án thứ nhất khi bạn có thể cho đối tác cũ nghỉ hưu và thích mang một chính sách duy nhất.
Dù thế nào, lựa chọn hiện rõ trong cấu hình, và đó chính là điểm mấu chốt. Một sự lùi im lặng thương lượng xuống tới một phép biến đổi cũ còn tệ hơn một khối rõ ràng, vì sẽ không có buổi rà soát nào đưa nó ra ánh sáng.
Hãy chứng minh, rồi ghi lại
Kết nối lại và kiểm tra ba sự thật riêng biệt trên máy chủ: một đề xuất đã được chọn, kết nối hiển thị là đã thiết lập, và máy khách đã nhận được địa chỉ. Một bắt tay đã thiết lập mà không có địa chỉ từ xa chỉ về pool hoặc các bộ chọn lưu lượng, và nó thuộc một thay đổi riêng. Xử lý cả hai cùng lúc khiến một cuộc thương lượng đã giải quyết trông như chưa giải quyết.
Ghi lại tập biến đổi đã được chấp nhận, khi nào bạn thay đổi nó và bạn đã xác minh bản dựng máy khách nào. Bản cập nhật tiếp theo có thể lại dịch chuyển yêu cầu, và những giá trị từng chạy được là thứ đầu tiên bạn muốn có bên cạnh những giá trị mới.