Hai hồ sơ, một cái kết nối được còn cái kia không, và cách nhanh để xem vì sao là một diff. Rắc rối là chính diff đó in ra khóa riêng nội tuyến, khóa tĩnh và bất kỳ khối thông tin xác thực nào mà tệp mang theo, và người ta dán kết quả vào cuộc trò chuyện trước khi nhận ra. Quyết định đang so sánh cái gì đến trước khi chạy lệnh. Hãy so sánh cấu trúc và vai trò trên các bản sao được bảo vệ, và tạo một tệp đã biên tập riêng khi người khác cần xem.

Một tệp .ovpn thực sự chứa gì

Một tệp .ovpn là một cấu hình với các khối nội tuyến tùy chọn. Nó có thể chứa chứng chỉ CA, chứng chỉ máy khách, khóa riêng, khóa tls-auth hoặc tls-crypt, và các chỉ thị trỏ tới tệp bên ngoài hoặc hỏi thông tin xác thực. Hai tệp có thể trông gần như giống hệt nhau và chỉ khác bên trong một khối, hoặc khác ở một chỉ thị làm thay đổi hoàn toàn cách truyền tải. Số dòng không cho bạn biết điều nào trong số đó đã xảy ra.

Một khác biệt bên trong khối khóa không phải bằng chứng công khai cho bất cứ điều gì. Một chứng chỉ được cấp lại và một chứng chỉ có khóa mới có thể tạo ra cùng một dạng thay đổi, nên sự không khớp của khối nói rằng vật liệu khác, chứ không nói quyết định nào đã tạo ra nó. Hãy coi đó là tín hiệu để so sánh các trường, không phải một phát hiện.

So sánh theo vai trò, không theo dòng

Hãy theo thứ tự của chính kết nối: đầu tiên là điểm cuối và cách truyền tải, rồi đến tin cậy và danh tính mong đợi, rồi đến xác thực người dùng, rồi đến tuyến, DNS và móc script. Trình tự đó khớp với những gì máy khách làm, nên khác biệt đầu tiên bạn gặp là thứ đầu tiên có thể đã làm đứt kết nối. So sánh theo thứ tự chữ cái thì lại rải các thiết lập liên quan khắp kết quả.

Một lượt duyệt nhận biết trường sẽ xem các mục này, theo thứ tự đó. Bất cứ điều gì máy khách hỏi tương tác đều thuộc hàng xác thực, không thuộc các hàng tin cậy.

  • remote, proto và cổng, gồm mọi khối kết nối.
  • ca và cert: nhà phát hành, chủ thể và ngày hết hạn.
  • Có khóa riêng hay không, không bao giờ là nó chứa gì.
  • tls-auth hoặc tls-crypt sự hiện diện và hướng khóa.
  • Các chỉ thị xác thực, gồm mọi tham chiếu tới tệp thông tin xác thực.
  • Tuyến, tùy chọn DNS và móc script chạy khi kết nối.

Khi một tệp chứa nhiều khối kết nối, hãy giữ mỗi tùy chọn với điểm cuối của nó. Chỉ so sánh dòng remote đầu tiên có thể bỏ sót phương án mà máy khách thực sự chọn trên mạng này.

Vì sao một diff thường là công cụ sai

Một diff thường được làm cho văn bản, không cho bí mật. Nó sẽ vui vẻ in một khóa riêng vào lịch sử màn hình, và nó sẽ không nói rằng chỉ thị bạn đang nhìn không liên quan đến sự cố. Việc trích xuất trường vừa an toàn hơn vừa dễ đọc hơn, vì vật liệu chứng chỉ có thể được so sánh như siêu dữ liệu thay vì byte.

openssl x509 -in ca.crt -noout -subject -issuer -enddate
openssl x509 -in client.crt -noout -subject -issuer -enddate
grep -E '^(remote|proto|port|tls-auth|tls-crypt|route|dhcp-option)' profile.ovpn

Hai lệnh đầu in danh tính và hiệu lực mà không chạm vào khóa, nên kết quả của chúng an toàn để dán. grep in tên và giá trị chỉ thị nhưng không bao giờ in thân khối, điều đó khiến nó thành lượt duyệt đầu tiên đúng khi bạn nghi có khác biệt về truyền tải hoặc định tuyến. Nếu phải so sánh chính khối, hãy so sánh hash của nó thay vì nội dung.

Tạo một bản sao đã biên tập cho phiếu

Loại bỏ bí mật thật và định danh không cần thiết trong khi giữ tên trường và đủ cấu trúc để giải thích khác biệt. Một dấu cùng hình dạng vẫn tiết lộ vật liệu nằm ở đâu và dài bao nhiêu, nên hãy quyết định liệu điều đó có chấp nhận được không. Hãy tự kiểm tra tệp đính kèm cuối cùng thay vì tin vào lệnh bạn nhớ đã chạy. Đừng sửa bản gốc đang dùng chỉ để tạo ví dụ, vì một hồ sơ đã biên tập không nhất thiết chạy được và không bao giờ nên nhập lại.

Giữ bản gốc nhận diện được bằng tên tệp và hash thay vì sao chép chúng vào ba thư mục có tên giống nhau. Một chuỗi hash đủ để chứng minh tệp nào đã được xem xét và không tốn gì nếu bị lộ. Cắt bớt các bản sao sau khi thay đổi khép lại, để người tiếp theo thừa hưởng một tệp có thẩm quyền duy nhất.

Giữ so sánh gắn với một sự cố

Một so sánh đáng giá khi nó trả lời câu hỏi về một lần nhập hoặc một sự cố kết nối. Hãy gọi tên bước thất bại trước, rồi chỉ so sánh các trường mà bước đó phụ thuộc; gom mọi thông tin xác thực của máy khách vào một thư mục làm lần rò rỉ tiếp theo dễ xảy ra hơn và lần chẩn đoán tiếp theo chậm hơn. Câu hỏi càng hẹp, danh sách trường có thể trả lời càng ngắn.

Nếu một tệp mới đến từ người vận hành, hãy xác nhận đường phân phối của nó trước khi thay vật liệu tin cậy. Sau thay đổi, hãy kiểm tra bản sao đã nhập mà máy khách thực sự chọn và kết quả đã thương lượng, vì một chỉ thị có thể bị một phiên bản máy khách khác bỏ qua hoặc đọc khác. Tệp trên đĩa không phải bằng chứng của kết nối đã chạy. Ngữ nghĩa của các chỉ thị nằm trong hướng dẫn OpenVPN 2.6.

Bài viết liên quan