Hai chứng chỉ máy khách có số sê-ri khác nhau, khóa khác nhau và thậm chí chủ thể đầy đủ khác nhau vẫn có thể cùng trỏ tới một tệp chính sách, bởi máy chủ không nhìn vào bất kỳ điều nào trong số đó. Nó đọc một cái tên từ chứng chỉ và mở tệp cấu hình máy khách tương ứng. Nếu cả hai chứng chỉ mang cùng một tên, chứng chỉ thứ hai thừa hưởng chính sách của chứng chỉ thứ nhất ngay khi kết nối.

Xung đột được tạo ra lúc đăng ký và chỉ được phát hiện khi kết nối, thường là khi một thiết bị nhận được địa chỉ hoặc bộ tuyến thuộc về máy khác. Ngăn chặn nó nghĩa là thống nhất trường nào máy chủ ánh xạ, rồi đặt trước giá trị đó trước khi bất cứ thứ gì được ký.

Công cụ chứng chỉ của bạn sẽ không cảnh báo bạn, bởi tính duy nhất bên trong X.509 và tính duy nhất của tên chính sách OpenVPN là những yêu cầu khác nhau do các hệ thống khác nhau áp đặt.

Máy chủ tra cứu một cái tên, không phải dấu vân tay

Với cách ánh xạ dựa trên chứng chỉ thông thường, máy chủ lấy tên chung từ chứng chỉ được trình bày và tìm tệp có tên đó trong thư mục cấu hình máy khách của mình. Tệp đó có thể ghim một địa chỉ tĩnh, đẩy tuyến hoặc áp dụng dấu tường lửa cho từng máy khách. Việc tra cứu là so khớp chuỗi với tên tệp, nên chữ hoa chữ thường, dấu cách và dấu câu đều quan trọng.

Một số triển khai cố ý hoán đổi ánh xạ để tên người dùng đã xác thực thay thế tên chung, và khi đó tên người dùng là thứ phải duy nhất. Dù thế nào, giá trị chọn chính sách chính là giá trị bạn đặt trước. Hãy quyết định đó là cái nào trước khi phát hành bất cứ thứ gì; đoán sau một xung đột tốn kém hơn hỏi.

Nơi hai cơ quan cùng khớp một tên

Một tổ chức chấp nhận chứng chỉ từ nhiều hơn một cơ quan phát hành sẽ vận hành hai quy trình đăng ký độc lập cùng ghi vào một không gian tên. Các quy tắc duy nhất của mỗi cơ quan chỉ áp dụng bên trong cơ quan đó, nên cả hai đều có thể phát hành hợp lệ cho cùng một tên chung mà không bên nào nhận ra điều gì sai.

Số sê-ri không giúp được gì. X.509 yêu cầu số sê-ri duy nhất trong phạm vi của nhà phát hành, đó là thuộc tính sổ sách của cơ quan đó chứ không phải danh tính thiết bị toàn cầu. Kiểm tra chủ thể cũng là một phép thử khác với kiểm tra tên chung: hai chứng chỉ có thể chia sẻ một CN nhưng khác nhau ở đơn vị tổ chức và vì thế mang chủ thể khác nhau. Tất cả những thuộc tính đó có thể đúng trong khi máy chủ vẫn ánh xạ cả hai chứng chỉ vào một tên tệp.

Tài liệu OpenSSL CA đề cập đến thiết lập unique_subject điều khiển quan điểm của cơ sở dữ liệu riêng của nó, và điểm khởi đầu trung thực là đọc cấu hình phát hành của bạn thay vì giả định một giá trị mặc định cụ thể của EasyRSA hay OpenSSL đang áp dụng.

Đặt trước tên hiệu lực trước khi ký

Duy trì một sổ đăng ký ánh xạ thiết bị tới bản ghi đã được phê duyệt và từ đó tới một tên tệp chính sách chính xác, để một cái tên được cấp phát một lần và vẫn được cấp phát. Việc đặt trước phải mang tính nguyên tử, mà trên thực tế nghĩa là một ràng buộc cơ sở dữ liệu hoặc một khóa bao quanh bước cấp phát rồi ký, chứ không phải một bảng tính do hai người cùng sửa.

Sau đó hãy biến việc kiểm tra thành một phần của phát hành: từ chối ký khi tên được yêu cầu đã tồn tại, và đưa mọi cơ quan mà máy chủ tin cậy vào lần kiểm tra đó, bởi một cái tên do cơ quan kia đặt trước cũng bị chiếm dụng như vậy. Một yêu cầu bị từ chối với lý do rõ ràng rẻ hơn một phiếu về thiết bị liên tục nhận địa chỉ tĩnh của người khác.

Gia hạn cố ý dùng lại một cái tên

Việc phát hành lại cho một thiết bị hiện có nên tạo ra số sê-ri mới dưới cùng tên chính sách, và đó là tái sử dụng hợp lệ chứ không phải xung đột. Điều phải quyết định trước là phần chồng lấn: liệu chứng chỉ cũ và mới có thể cùng hợp lệ hay không, và cách thông tin đăng nhập cũ được cho nghỉ.

Đừng với tới duplicate-cn để giải quyết việc này. Tùy chọn máy chủ đó điều khiển các kết nối đồng thời trình bày cùng một tên; nó không khóa việc đăng ký, và việc bật nó không làm cho một địa chỉ tĩnh dùng chung trở nên an toàn cho hai máy cùng lúc. Việc thu hồi thường nhận diện chứng chỉ qua nhà phát hành và số sê-ri, nên cho thông tin đăng nhập cũ nghỉ không nhất thiết phải vô hiệu hóa bản thay thế của nó miễn là máy chủ nhận và thực thi dữ liệu thu hồi đúng.

Xác nhận ánh xạ bằng các công cụ trên máy

Trước khi trao cho một thiết bị thông tin đăng nhập mới của nó, hãy đọc tên từ chứng chỉ theo cách máy chủ sẽ làm, rồi so sánh với tệp chính sách mà bạn kỳ vọng sẽ được chọn.

openssl x509 -in device42.crt -noout -subject -nameopt sep_multiline
ls -l /etc/openvpn/ccd/device42
grep -n "duplicate-cn" /etc/openvpn/server.conf

Lệnh đầu tiên in các trường chủ thể riêng rẽ, điều này khiến một đơn vị tổ chức lạc đường hoặc một dấu cách nhân đôi hiện ra ngay lập tức. Lệnh thứ hai xác nhận rằng có một tệp chính sách đúng dưới tên đó, và lệnh thứ ba cho thấy máy chủ có được cấu hình cho phép nhiều phiên trên một tên hay không. Hãy chạy cả ba trên một chứng chỉ mới trước khi nó rời bước đăng ký, khi một sai sót vẫn chỉ tốn một chữ ký thay vì một sự cố. Giữ đầu ra cùng với phiếu để người tiếp theo thấy máy chủ thực sự nhận được tên nào.

Kết thúc bằng một kết nối thật và so sánh địa chỉ được cấp cùng các tuyến được đẩy với tệp chính sách, chứ không phải với điều bạn định viết. Nếu hai thiết bị báo cùng một địa chỉ tĩnh, sổ đăng ký có một xung đột mà không cuộc kiểm tra chứng chỉ nào sẽ phát hiện ra.

Bài viết liên quan