Cùng tên tệp ca.crt, chứng chỉ khác: so sánh điều gì
Hai hồ sơ có thể mang ca.crt với nội dung khác nhau. Lấy dấu vân tay của thứ tiến trình tải, rồi kiểm tra xem đó có phải neo tin cậy bạn dự định không.
Hai hồ sơ đều mang một tệp tên là ca.crt, một đường hầm lên được và đường kia thất bại với lỗi chuỗi. Mở hai tệp cạnh nhau hiếm khi giải quyết được việc này, và tắt xác minh lại giải quyết nó theo hướng sai. Câu hỏi mà lỗi thực sự đặt ra hẹp hơn: tiến trình nào tải chứng chỉ nào làm neo tin cậy của nó, và hai cái đó có phải cùng một đối tượng không? Trả lời điều đó trước và phần còn lại của chẩn đoán sẽ có hướng. Tên tệp là nhãn đóng gói, và đường dẫn ghi trong hồ sơ cũng không có thẩm quyền, nên mọi thứ phụ thuộc vào những gì tiến trình thực sự đọc.
Tìm chứng chỉ mà ứng dụng thực sự tải
OpenVPN chấp nhận cơ quan chứng thực ở hai dạng, và dạng quyết định byte nào quan trọng. Một hồ sơ có thể trỏ tới tệp bên ngoài bằng ca, hoặc nhúng chứng chỉ vào khối <ca> ngay trong hồ sơ. Khi cả hai cùng tồn tại, khối được nhúng thắng và tệp nằm cạnh hồ sơ không bao giờ được mở.
Đọc hồ sơ đang lỗi và tìm ra nó dùng dạng nào trước khi so sánh bất cứ điều gì. Một bản sao lấy từ thư mục bên cạnh, hoặc từ gói mà hồ sơ kia đến từ đó, không cho bạn biết gì về những gì tiến trình này tin cậy. Điều tương tự cũng đúng với đường dẫn trong cấu hình: nó được phân giải tương đối với nơi ứng dụng được khởi động, mà không phải lúc nào cũng là thư mục bạn đang xem. Hãy đọc hồ sơ, không phải thư mục.
Chứng chỉ được nhận diện bằng nội dung của chúng: khóa công khai, chủ thể và nhà phát hành, cửa sổ hiệu lực và chữ ký trên tất cả những thứ đó. Hai tệp có byte giống hệt là cùng một chứng chỉ dù được gọi tên gì, và hai tệp cùng tên có thể là những cơ quan không liên quan. Tên là nhãn đóng gói, không phải danh tính.
Lấy dấu vân tay của cả hai bản sao bằng openssl
Dấu vân tay là một hàm băm trên mã hóa DER của chứng chỉ, dạng mà chữ ký bao phủ, nên phần cuối dòng và văn bản tiêu đề không thể ảnh hưởng đến nó. Tính nó cho từng tệp và bạn có hai chuỗi thập lục phân ngăn cách bằng dấu hai chấm, hoặc khớp hoặc không. Không cần đọc gì khác trong chứng chỉ để trả lời câu hỏi so sánh.
openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256
Thật hấp dẫn khi trỏ openssl vào chính hồ sơ, nhưng nó đọc khối chứng chỉ đầu tiên xuất hiện trong tệp, và hồ sơ thường mang <cert> trước <ca>. Trích xuất khối cơ quan, rồi lấy dấu vân tay của tệp đã trích xuất, vì đó là bản sao mà ứng dụng sẽ thực sự dùng.
sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256
Dấu vân tay giống nhau nghĩa là vật liệu tin cậy là như nhau và lỗi chuỗi có nguyên nhân khác, đó là một cuộc điều tra khác. Dấu vân tay khác nhau nghĩa là chứng chỉ khác nhau, và phần tiếp theo bắt đầu từ đó.
Đọc sự không khớp trước khi cho rằng có tấn công
Dấu vân tay khác nhau nghĩa là chứng chỉ khác nhau và không hơn gì thế. Phát hành lại, luân chuyển, cơ quan đổi tên hoặc gói cũ đều tạo ra các tệp khác nhau với lịch sử hoàn toàn hợp pháp. Cái nào thuộc về triển khai là câu hỏi dành cho người vận hành hoặc bản ghi triển khai, không phải thời điểm sửa đổi tệp. Kho lưu trữ sao chép dấu thời gian, nên tệp mới hơn không tự động là neo đúng.
Một gốc tự ký là bình thường, nên tìm thấy một cái không phải bằng chứng của vấn đề. Nhiệm vụ của người xác minh là dựng một đường đi từ chứng chỉ máy chủ đến neo được trao, và lỗi chuỗi thường có nghĩa là đường đi đó không thể hoàn thành.
Kiểm tra xem neo của hồ sơ lỗi có phải là cơ quan mà triển khai vẫn còn phát hành hay không. Nếu dấu vân tay không khớp với bất cứ thứ gì trong bản ghi triển khai, hồ sơ chỉ đơn giản là lỗi thời, và không có tinh chỉnh nào phía ứng dụng sửa được điều đó.
Sửa tin cậy mà không tắt xác minh
Cách sửa ngắn hạn là tắt xác minh hoặc thêm từng chứng chỉ trong chuỗi làm neo. Cả hai đều làm thông báo biến mất, và cả hai đều thay đổi những máy chủ mà ứng dụng sẽ chấp nhận từ đó về sau. Bật lại xác minh, cài neo dự định và kiểm thử lại.
Nếu chuỗi giờ dựng được nhưng một lỗi khác xuất hiện, đó là tiến bộ: xác minh tên, ngày hiệu lực và thu hồi là những kiểm tra riêng với thông báo riêng. Giữ cặp dấu vân tay và văn bản lỗi gốc cùng nhau trong phiếu, để người tiếp theo thấy neo nào đã được tải và neo nào được mong đợi. Một cặp dấu vân tay đủ nhỏ để dán vào ghi chú bàn giao, và lần xuất hiện tiếp theo sẽ mất năm phút thay vì cả một buổi chiều.
Lấy cơ quan đúng qua cùng kênh đã xác thực đã chuyển hồ sơ. Kéo một chứng chỉ khỏi máy chủ vì chủ thể của nó trông quen thuộc là một hành động khác, và nó âm thầm mở rộng những gì ứng dụng sẽ tin cậy.