remote-cert-tls server: nó kiểm tra gì trong một hồ sơ OpenVPN
Chỉ thị kiểm tra vai trò được mã hóa trong chứng chỉ của đối tác, không phải tên của nó. Hãy so sánh vai trò, gốc tin cậy và kiểm tra tên máy chủ trước khi tắt bất cứ thứ gì.
Ba câu hỏi khác nhau được ba phần khác nhau của hồ sơ OpenVPN trả lời, và việc gộp chúng lại chính là cách người ta tắt đi một kiểm tra vốn đang hoạt động. Chứng chỉ của đối tác có được ký bởi cơ quan mà tôi tin cậy không? Chứng chỉ đó có khai báo vai trò máy chủ TLS không? Đó có phải đúng máy chủ mà tôi muốn kết nối tới không? remote-cert-tls server chỉ trả lời câu hỏi ở giữa, và nó làm vậy bằng cách đọc các phần mở rộng bên trong chứng chỉ.
Ba kiểm tra dễ gộp lại trong đầu
Gốc tin cậy nằm trong chỉ thị ca. Việc kiểm tra vai trò thuộc về remote-cert-tls. Việc kiểm tra danh tính thuộc về verify-x509-name, khi hồ sơ sử dụng nó, hoặc thuộc về bất kỳ kiểm tra tên nào mà việc triển khai thêm vào.
Chúng bao phủ những lỗi khác nhau:
| Question | Directive | Failure it catches |
|---|---|---|
| Who signed this? | ca | Certificate from an unrelated authority |
| Is this a server? | remote-cert-tls | Client certificate presented by a peer |
| Is this my server? | verify-x509-name | Another valid server from the same CA |
Một hồ sơ có thể có cả ba mà vẫn yếu nếu CA được chia sẻ quá rộng, đó là câu hỏi về quản lý khóa chứ không phải về chỉ thị.
Kiểm tra vai trò đọc những gì
Chỉ thị này là một macro. Nó mở rộng thành một yêu cầu về mục đích sử dụng khóa và một yêu cầu về mục đích sử dụng khóa mở rộng nêu tên vai trò TLS Web Server, nên chứng chỉ của đối tác phải thực sự khai báo mục đích đó. Chứng chỉ được cấp để xác thực máy khách không thỏa mãn yêu cầu này, kể cả khi cùng một cơ quan đã ký cả hai.
Điều đó quan trọng vì CA dùng chung là phổ biến trong các triển khai nhỏ. Một cơ quan ký cho mọi máy khách và máy chủ, và nếu không có kiểm tra vai trò thì bất kỳ chứng chỉ nào trong số đó cũng có thể hoàn tất phía máy chủ của quá trình bắt tay. Kiểm tra này không làm kịch bản đó trở nên bất khả thi, nhưng nó loại bỏ phiên bản tầm thường của kịch bản ấy.
Chỉ thị này bất đối xứng theo thiết kế: máy khách mang remote-cert-tls server, còn máy chủ mang remote-cert-tls client. Đổi chỗ chúng và mọi kết nối sẽ thất bại với lỗi vai trò trông như chứng chỉ bị hỏng.
Các hồ sơ cũ đôi khi dùng ns-cert-type cho cùng mục đích. Các trang hướng dẫn hiện hành coi tùy chọn đó là đã bị thay thế, nên một hồ sơ vẫn còn dựa vào nó thì đáng để chuyển đổi hơn là gỡ lỗi.
Vì sao tắt nó lại có cảm giác như đang sửa lỗi
Khi kiểm tra vai trò thất bại, kết nối dừng lại với lỗi xác minh và động thái hiển nhiên là xóa dòng đó đi. Kết nối sau đó dựng lên được, điều này có cảm giác như tiến bộ và thực ra lại chính là kiểu hỏng mà chỉ thị này tồn tại để ngăn ngừa. Giờ bạn chấp nhận một đối tác mà chứng chỉ của nó chưa bao giờ được dành cho vai trò đó.
Hãy đọc lỗi thay vào đó. Nó nêu tên kiểm tra đã thất bại, và chứng chỉ ở phía bên kia có thể được xem xét để biết nó thực sự mang những phần mở rộng nào. Hai phút đọc sẽ phân định lỗi nằm ở việc cấp phát hay ở cấu hình. Đoán mò tốn một buổi chiều và thường kết thúc bằng một hồ sơ bị làm yếu đi. Một chứng chỉ máy chủ được gia hạn mà mất mục đích sử dụng khóa mở rộng là lỗi thật trong việc gia hạn, không phải lý do để nới lỏng máy khách.
Kiểm tra tên là một chỉ thị riêng
Thỏa mãn kiểm tra vai trò chỉ nói rằng đối tác là một máy chủ nào đó được cơ quan của bạn ký. Nó không nói gì về việc đó là máy chủ nào, điều này quan trọng khi cùng một CA cấp chứng chỉ cho nhiều cổng kết nối và một trong số đó bị xâm phạm hoặc bị dùng vào mục đích khác.
verify-x509-name so sánh chủ thể của chứng chỉ với một giá trị bạn cấu hình, với các chế độ khớp cho chủ thể chính xác, một tiền tố hoặc một trường duy nhất. Hãy dùng trường thực sự nhận diện cổng kết nối, và hãy dự kiến cập nhật nó một cách có chủ đích khi tên thay đổi.
Không chỉ thị nào thay thế việc quản lý khóa tốt. Nếu tệp khóa của máy khách bị sao chép lung tung cùng với hồ sơ, danh tính của đối tác chỉ mạnh bằng danh sách phân phối.
Hãy xem chứng chỉ trước khi sửa hồ sơ
Hãy đọc chứng chỉ của đối tác và nhật ký của máy khách, theo đúng thứ tự đó. Chứng chỉ cho biết nó khai báo những vai trò nào; nhật ký cho biết kiểm tra nào đã từ chối nó.
Các lệnh này in ra các phần mở rộng mục đích sử dụng và các dòng xác minh từ một kết nối chi tiết:
openssl x509 -in server.crt -noout -text | grep -A1 -E "Key Usage|Extended Key Usage"
sudo openvpn --config client.ovpn --verb 4 2>&1 | grep -i verifyNếu các phần mở rộng cho thấy vai trò máy chủ mà nhật ký vẫn báo lỗi vai trò, thì hồ sơ có lẽ đang trỏ tới sai tệp chứng chỉ chứ không phải chứng chỉ hỏng. Nếu các phần mở rộng chỉ cho thấy xác thực máy khách, hãy ngừng xem xét máy khách và sửa việc cấp phát. Dù thế nào, hãy khôi phục kiểm tra trước khi bạn gọi kết nối là khỏe mạnh, vì một lần bắt tay thành công sau khi gỡ xác minh chứng minh ít hơn lỗi mà nó đã thay thế.