Vì sao OpenConnect từ chối cổng sau khi thay chứng chỉ?
Lỗi xác minh sau khi thay chứng chỉ ở cổng là một quyết định tin cậy, không phải đường hầm hỏng. Chọn giữa CA phát hành và ghim một khóa duy nhất.
Cổng thay chứng chỉ, và một máy khách vẫn kết nối được hôm qua bắt đầu dừng ở lần trao đổi TLS đầu tiên. Thông báo nêu lý do xác minh chứ không phải sự cố mạng, và bản thân máy không thay đổi, đó là manh mối hữu ích. Thứ đã hỏng là mối quan hệ giữa chứng chỉ đang được trình bày và những gốc mà máy khách sẵn sàng xét đến. Sửa nó là một quyết định tin cậy, nên hãy đưa ra quyết định đó trước khi gõ một tùy chọn.
Đọc lỗi trước khi thay đổi bất kỳ cài đặt tin cậy nào
Lỗi kiểu thiếu người ký nghĩa là chuỗi kết thúc ở thứ mà máy khách không chấp nhận. Đó có thể là chứng chỉ được gia hạn từ một cơ quan nội bộ, một thay thế từ cơ quan công khai, hoặc một thiết bị ở giữa trình bày chứng chỉ của chính nó. Chỉ cách diễn đạt không thể phân biệt những trường hợp đó, nên hãy xem nhà phát hành trước khi quyết định.
Chạy kết nối một lần ở tiền cảnh và để nó thất bại, vì đầu ra tương tác mang tên máy chủ, chuỗi nhà phát hành và dấu vân tay mà máy khách đã tính. So sánh nhà phát hành đó với một cơ quan mà tổ chức của bạn thực sự vận hành. Nếu dấu vân tay thay đổi mà nhà phát hành thì không, hãy coi đó là đáng ngờ cho đến khi việc gia hạn được xác nhận qua một kênh bạn đã tin cậy. Đoán tại thời điểm này chính là cách một người cuối cùng ghim khóa của kẻ chặn.
Ghi lại phiên bản máy khách trong cùng ghi chú. Phần lớn các lỗi trông như vấn đề tin cậy đến từ một máy khách cũ hơn gặp phải trao đổi cổng mới hơn.
Chọn giữa tin nhà phát hành và ghim một khóa
Cả hai lựa chọn đều làm kết nối thành công. Chúng hỏng về sau theo những cách trái ngược, nên lựa chọn thuộc về lỗi mà bạn có thể chịu được.
| Approach | Good fit | What breaks it |
|---|---|---|
Trust the issuing CA with --cafile | Internal PKI you can obtain over an already trusted channel | CA rotation, or a client that still falls back to public roots |
Pin one key with --servercert | No CA relationship, or exactly one key should ever be accepted | Any reissue that generates a new key pair |
Dùng tệp CA khi chứng chỉ đến từ một cơ quan bạn có thể xác minh độc lập, vì khi đó việc gia hạn tiếp tục hoạt động mà không cần chạm vào đối số của máy khách. Ghép nó với công tắc vô hiệu hóa các gốc hệ thống, nếu không một cơ quan công khai có thể đáp ứng việc kiểm tra thay bạn. Thay vào đó hãy ghim khi cổng không có CA mà bạn có thể lấy được hoặc khi mục tiêu là ngoại lệ hẹp nhất có thể. Không con đường nào an toàn hơn một cách trừu tượng: CA mở rộng qua các lần gia hạn, việc ghim dễ xem lại hơn.
Dù bạn chọn cách nào, giá trị tin cậy phải đến qua một kênh đã được tin cậy trước khi thay đổi xảy ra. Quản trị viên, một phiên bảng điều khiển trên cổng hoặc một bản sao lấy trước đều đủ điều kiện. Sao chép bất kỳ dấu vân tay nào mà lời nhắc hiển thị là tiện lợi và cũng chính là điều một kẻ chặn hy vọng.
Đặt giá trị vào lệnh mà bạn thực sự khởi chạy
Việc ghim đi trong một tùy chọn chứng chỉ máy chủ, và tiền tố của nó quyết định cách mã hóa: các thông tóm tắt khóa công khai dạng thập lục phân dưới sha1 hoặc sha256, và ghim khóa base64 dưới pin-sha256. Việc cung cấp nó cũng vô hiệu hóa tin cậy hệ thống cho lần chạy đó, nên khóa được ghim trở thành toàn bộ quyết định.
sudo openconnect --protocol=gp vpn.example.com --user alice \
--servercert pin-sha256:AbCdEf... # single key pin
sudo openconnect vpn.example.com --cafile /etc/ssl/internal-ca.pem --no-system-trust
Máy khách khớp một thông tóm tắt bị cắt, chỉ chấp nhận bốn ký tự sau tiền tố, đây là một cái bẫy chứ không phải sự tiện lợi. Một giá trị bị rút ngắn vẫn qua được tại chỗ và vẫn không nhận diện đúng cổng bạn định dùng. Hãy sao chép chuỗi đầy đủ mà máy khách in ra ở lần thử đầu thay vì gõ lại từ một thông báo. Sau đó chuyển tùy chọn đã hoàn tất vào tập lệnh bao, tệp đơn vị hoặc hồ sơ khởi chạy kết nối, để quyết định tin cậy có thể xem lại và các chỉnh sửa về sau là có chủ đích.
Trình khởi chạy trên màn hình và trình cắm NetworkManager lưu bản sao riêng của các đối số kết nối. Một tập lệnh được sửa trên đĩa không đến được hồ sơ đã nhập trước đó, nên giá trị đã lưu tiếp tục thắng.
Xử lý việc luân chuyển mà không tự khóa mình ra ngoài
Tùy chọn có thể được đưa ra nhiều lần, nên một thay đổi có kế hoạch có thể chấp nhận cả khóa đi và khóa đến cùng lúc. Thêm ghim mới trước khi cổng chuyển, giữ cả hai trong danh sách khi các phiên di chuyển, và bỏ cái đã nghỉ hưu khi khóa cũ biến mất. Cửa sổ đó cần một người sở hữu, vì một ghim đôi bị lãng quên để lại một khóa được tin cậy mà không ai theo dõi. Một lần dựng lại tạo ra cặp khóa mới sẽ phá vỡ ghim thuần, và việc khôi phục là cùng thủ tục theo chiều ngược lại.
Viết ngày thay đổi bên cạnh ghim. Một ghim không có ngày xem lại là sự cố tương lai mang theo một thông báo lỗi khó hiểu.
Loại trừ phiên bản máy khách trước khi sửa tin cậy
Một máy khách lỗi thời có thể thất bại khi phân tích phản hồi xác thực mà cổng đã thay đổi từ đó, và thông báo bề mặt vẫn nói về kết nối chứ không phải bộ phân tích. So sánh phiên bản đã cài với những gì cổng ghi lại, và thử một gói hiện hành trong hồ sơ dùng một lần trước khi thay đổi bất kỳ cài đặt tin cậy nào.
openconnect --version
Sau khi sửa, hãy xác minh hai điều thay vì một: cổng thông tin tải qua đường hầm, và một địa chỉ nội bộ thông thường phản hồi. Một cái bắt tay hoàn tất chỉ chứng minh rằng quyết định tin cậy đã được chấp nhận.