Mã hóa Windows và strongSwan: khớp đúng lớp
Cùng độ dài khóa không phải là một bộ tương thích. Tách chính sách IKE khỏi các phép biến đổi ESP và giữ CBC và GCM trong các đề xuất khác nhau.
Cả hai đầu đều nói AES-128 mà đường hầm vẫn không chịu được thiết lập. CBC và GCM là những phép biến đổi khác nhau tình cờ có cùng độ dài khóa, và một máy khách đề nghị một loại không làm hài lòng cổng chỉ chấp nhận loại kia. Từ AES mô tả một họ, không phải một thỏa thuận.
Còn có một trục thứ hai, và chính nó tạo ra những lỗi khó hiểu.
Hai lớp, hai danh sách độc lập
IKE bảo vệ chính cuộc thương lượng, trong khi hiệp hội con bảo vệ lưu lượng mà bạn thực sự quan tâm. Windows trình bày cái đầu tiên như một phương thức mã hóa và một phương thức toàn vẹn, và cái thứ hai như các hằng số biến đổi mật mã và xác thực. Những trường đó không phải là bí danh của nhau, và một giá trị hợp lệ trong trường này có thể vô nghĩa hoặc sai trong trường kia. Đọc hồ sơ với cách tách đó trong đầu sẽ loại bỏ phần lớn sự nhầm lẫn.
Hệ quả thực tế là bạn có thể có một chính sách trao đổi khóa hoàn toàn chấp nhận được và một chính sách kênh dữ liệu mà đối tác sẽ không chấp nhận. Một danh sách thương lượng; danh sách kia bảo vệ các gói. Thay đổi một giá trị trong danh sách đầu không ảnh hưởng gì đến danh sách thứ hai, dù hai danh sách trông giống nhau đến đâu trong hộp thoại cấu hình.
Hãy ghi cả hai danh sách trước khi so sánh chúng với cổng. So sánh từ trí nhớ là cách một trường bị sửa hai lần và trường kia không bao giờ. Giữ bảng điều khiển của cổng mở bên cạnh hồ sơ.
Đọc lỗi bên cạnh các đề xuất
Giai đoạn thất bại cho bạn biết nên xem danh sách nào. Sự từ chối trong quá trình trao đổi khóa ban đầu là vấn đề đề xuất IKE, và nó xảy ra trước khi bất kỳ hiệp hội con nào tồn tại. Thất bại khi hiệp hội lưu lượng được bảo vệ đang được thương lượng là vấn đề đề xuất ESP, và quá trình trao đổi khóa đã thành công. Thông báo khớp chính sách chung từ máy khách không nêu tên giai đoạn nào, vì vậy góc nhìn của chính cổng là hữu ích.
swanctl --list-conns
swanctl --list-sas
journalctl -u strongswan -n 60 --no-pager
So sánh đề xuất nhận được, đề xuất đã cấu hình và đề xuất được chọn cho lần thử duy nhất đó. Ba danh sách khác nhau quan trọng ở đây, và chỉ danh sách cuối mô tả những gì thực sự được dùng. Hãy trích dẫn nguyên văn trong phiếu thay vì tóm tắt.
Giữ CBC và GCM như các lựa chọn thay thế riêng biệt
Một cổng được phép cố ý chấp nhận một trong hai họ cần hai đề xuất, không phải một. Trong strongSwan dấu phẩy phân tách các lựa chọn thay thế, và dấu gạch nối nối các thành phần của một bộ duy nhất. Kết hợp cả hai họ bằng dấu gạch nối tạo ra một đề xuất bất khả thi thay vì hai đề xuất chấp nhận được.
proposals = aes128gcm16-prfsha256-ecp256, aes128-sha256-ecp256
esp_proposals = aes128gcm16-ecp256
Lựa chọn đầu tiên mang mã hóa có xác thực và vẫn nêu tên một hàm giả ngẫu nhiên, vì việc dẫn xuất khóa cần một hàm ngay cả khi tính toàn vẹn đến từ mật mã. Lựa chọn thứ hai là mã hóa cổ điển với một thuật toán toàn vẹn riêng. Cả hai vẫn phụ thuộc vào những gì triển khai mật mã đã tải hỗ trợ.
Đề xuất ESP không phải là đề xuất IKE được đổi tên
Mã thông báo mật mã trông giống hệt nhau trong cả hai danh sách, và hầu như không có gì khác được chuyển sang. Đề xuất ESP không có hàm giả ngẫu nhiên trao đổi khóa, và các yêu cầu về toàn vẹn và bí mật chuyển tiếp của nó được lập luận dựa trên chính sách Windows ở phía bên kia thay vì sao chép từ dòng IKE. Dịch máy móc danh sách này sang danh sách kia tạo ra thứ gì đó xác thực được và không bao giờ thương lượng.
Chọn một hướng và giữ nguyên. Hoặc cổng giữ chính sách chỉ GCM và máy khách triển khai chính sách tương thích đầy đủ, hoặc cổng chấp nhận cả hai họ và máy khách giữ bộ hiện có. Bật một phương án dự phòng mà chính sách bảo mật cấm không phải là cách khắc phục, dù nó xóa lỗi nhanh đến đâu.
Xác minh cả hai bộ, sau đó là một lần gia hạn khóa
Xác nhận riêng bộ trao đổi khóa đã chọn và bộ lưu lượng đã chọn, vì chúng đến từ các danh sách khác nhau và có thể thành công độc lập. Sau đó để một lần gia hạn khóa diễn ra và xác nhận cả nó nữa. Một lần bắt tay đầu tiên hoạt động và một lần gia hạn khóa thất bại mô tả một tập đề xuất chỉ chấp nhận được một phần.
Giữ bằng chứng đó cùng với thay đổi. Một lần ngắt kết nối lặp lại cần bản ghi trao đổi thất bại của riêng nó trước khi ai đó đổ lỗi cho bộ hẹn giờ hoặc lỗi nền tảng.