Chứng chỉ RSA có thể hoạt động với dh none trong OpenVPN không?
Loại chứng chỉ và nhóm trao đổi khóa là hai lựa chọn TLS riêng biệt. Chứng chỉ RSA có thể xác thực một handshake ECDHE, vì vậy dh none không cần chứng chỉ EC.
Đây là một cấu hình máy chủ ghi dh none bên cạnh một chứng chỉ ghi RSA, kèm theo nghi ngờ dai dẳng rằng một trong hai phải sai. Không có gì sai. Chứng chỉ ký và xác thực; trao đổi khóa thiết lập một bí mật chung. Đó là hai công việc khác nhau trong cùng một handshake, và TLS cho phép chứng chỉ RSA xác thực một handshake sử dụng thỏa thuận tạm thời trên đường cong elliptic.
Sự nhầm lẫn thường đến cùng một hướng dẫn di chuyển. Nó nói thay tệp tham số DH bằng dh none, người đọc nhận thấy chứng chỉ không phải chứng chỉ đường cong elliptic, và hai sự thật bị coi là mâu thuẫn.
Tại sao hai thiết lập trông có liên quan
Cấu hình OpenVPN cũ yêu cầu tệp tham số DH vì Diffie-Hellman trường hữu hạn cần các tham số miền mà cả hai bên đồng ý. Chỉ thị dh trỏ tới tệp đó. Khi một triển khai chuyển sang ECDH, các tham số đến từ một đường cong có tên thay thế, và tệp không còn cần thiết, đó là điều dh none diễn đạt.
Chứng chỉ là một trục riêng. Chúng mang khóa công khai và chữ ký chứng minh danh tính máy chủ, và khóa đó có thể là RSA hoặc đường cong elliptic bất kể khóa phiên được thỏa thuận như thế nào. Một handshake dùng ECDHE cho thỏa thuận khóa và RSA cho xác thực là phổ biến và được triển khai rộng rãi.
Cách đặt tên làm trầm trọng thêm sự chồng chéo. Đường cong elliptic xuất hiện trong cả tên bộ ECDHE và ECDSA, nên dễ giả định rằng bất kỳ kết nối nào nhắc đến đường cong đều phải có chứng chỉ đường cong. Không phải vậy.
Cách đọc đúng tên bộ TLS 1.2
Lấy ECDHE-RSA-AES256-GCM-SHA384. Token đầu tiên là họ trao đổi khóa: Diffie-Hellman tạm thời trên đường cong elliptic. Token thứ hai là họ xác thực: RSA. Phần còn lại mô tả bảo vệ bản ghi và hàm băm dùng trong handshake.
Bộ ECDHE-ECDSA dùng cùng họ trao đổi khóa với phương thức xác thực khác, nên cần chứng chỉ đường cong elliptic. Bộ DHE-RSA dùng Diffie-Hellman tạm thời trường hữu hạn với xác thực RSA, và bộ đó thực sự cần tham số DH.
Đọc tên bộ từ trái sang phải và gán từng phần cho công việc của nó. Khi các token được tách ra, câu hỏi chuyển từ «chứng chỉ của tôi có khớp với dh none không» sang «máy chủ của tôi có cho phép một bộ mà trao đổi khóa không cần tệp DH không».
dh none thực sự vô hiệu hóa điều gì
dh none bảo máy chủ không tải tệp tham số DH trường hữu hạn. Nó không vô hiệu hóa xác thực, kiểm tra chứng chỉ hay chính TLS. Tuy nhiên nó yêu cầu trao đổi khóa đã thương lượng không cần các tham số đó, trên thực tế nghĩa là một bộ ECDHE hoặc handshake TLS 1.3.
Chính từ yêu cầu đó mà sự cố phát sinh. Nếu chính sách mật mã TLS của máy chủ bị giới hạn ở các bộ DHE, hoặc máy khách chỉ cung cấp những bộ đó, việc xóa tệp tham số không để lại phương thức trao đổi khóa khả dụng nào và handshake thất bại. Lỗi thường xuất hiện trong handshake kênh điều khiển, trước bất kỳ xác thực người dùng nào. Hãy đọc danh sách mật mã trước khi đổ lỗi cho tệp bị thiếu.
Về phía đường cong elliptic, đường cong do cấu hình TLS của máy chủ chọn, và OpenVPN cung cấp tùy chọn chọn nó trên các nhánh cũ. TLS 1.3 xử lý thương lượng nhóm bên trong giao thức và hoàn toàn không tham chiếu tệp DH.
dh none tự nó không phải là giảm bảo mật. Độ mạnh của trao đổi sau đó phụ thuộc vào đường cong và bộ thực sự được thương lượng, vì vậy bước tiếp theo là xem các bên đã chọn gì chứ không phải tệp bị thiếu.
Xác nhận thương lượng trước khi chỉnh sửa
Tăng mức chi tiết của máy chủ và máy khách và đọc dòng kênh điều khiển mà OpenVPN in ra sau khi kết nối. Dòng đó nêu phiên bản TLS và mật mã đã thương lượng, đồng thời báo cáo loại khóa của chứng chỉ đối tác. Chỉ một dòng đó trả lời câu hỏi mà tệp cấu hình chỉ ngụ ý.
Nếu nó hiển thị TLS 1.2 với bộ ECDHE-RSA và chứng chỉ RSA, tổ hợp đó đúng là điều dh none mong đợi, và không có gì phải sửa. Nếu nó hiển thị bộ DHE hoặc lỗi handshake không có mật mã chung, cách khắc phục nằm ở chính sách mật mã hoặc khả năng của máy khách, không phải ở chứng chỉ.
Hãy thử máy khách cũ nhất mà bạn định hỗ trợ, vì máy khách hiện tại có thể thương lượng TLS 1.3 trong khi máy khách cũ hơn bị giới hạn ở các bộ TLS 1.2. Nếu máy khách cũ nhất không có chồng chéo, hãy mở rộng các bộ được phép hoặc nâng cấp điểm cuối đó.
Đừng tắt xác minh chứng chỉ để vượt qua lỗi handshake. Lỗi đang cho bạn biết rằng các bên không thể thỏa thuận về trao đổi khóa, và tắt kiểm tra sẽ loại bỏ bảo đảm danh tính mà không giải quyết thỏa thuận.
Danh sách kiểm tra: chứng chỉ có phải RSA, bộ ECDHE có được phép, nhật ký có hiển thị bộ đó, và máy khách được hỗ trợ cũ nhất có cũng thương lượng nó? Nếu cả bốn đều có, dh none đang làm công việc của nó.