Bạn cấp một chứng chỉ máy chủ mới với địa chỉ overlay khác, sao chép đè lên tệp cũ, gửi lệnh nạp lại, và máy chủ vẫn trả lời trên địa chỉ cũ. Phản xạ là cho rằng việc nạp lại đã thất bại hoặc đã đọc nhầm tệp. Thường thì không có chuyện nào như vậy: tiến trình đang chạy đã cố ý giữ lại danh tính mà nó vốn có, bởi vì bản thay thế đã thay đổi một thứ mà việc nạp lại không thể áp dụng.

Hỗ trợ nạp lại PKI của Nebula được ghi tài liệu kèm đúng ranh giới đó, và rất dễ bỏ qua khi cùng tài liệu cho thấy nạp lại vẫn hoạt động với những thay đổi khác.

Nạp lại thực sự đọc lại những gì

Chứng chỉ máy chủ không chỉ là thông tin xác thực như khóa SSH. Nó mang địa chỉ overlay, tên máy chủ, tư cách thành viên nhóm và thời hạn hiệu lực, và tất cả những thứ đó được gắn lại với nhau bằng chữ ký của CA. Tiến trình nền dùng nội dung đã ký đó để quyết định cách tự giới thiệu và những quy tắc nào áp dụng cho nó.

Nạp lại cho phép tiến trình nhận thông tin xác thực đã gia hạn mà không phải bỏ các đường hầm, điều này có giá trị với việc luân chuyển định kỳ: cùng địa chỉ, cùng tên, cùng nhóm, hết hạn muộn hơn. Ràng buộc là danh tính phải giữ nguyên. Đổi địa chỉ overlay và đường nạp lại không thể áp dụng nó, vì địa chỉ là một phần của điều mà phiên bản đang chạy đã cam kết.

Vậy hành vi bạn thấy là ranh giới đã được ghi tài liệu đang làm đúng việc của nó, không phải một lỗi âm thầm. Tệp trên đĩa là mới; danh tính trong bộ nhớ là cũ; tiến trình không có cách nào được hỗ trợ để hòa giải khác biệt đó mà không khởi động lại.

Địa chỉ, tên và nhóm là một danh tính

Sẽ hữu ích khi coi chứng chỉ là một bản ghi duy nhất thay vì một tập các trường có thể sửa độc lập. Di chuyển địa chỉ không giống đổi một tùy chọn, vì địa chỉ xuất hiện trong cấu hình ngang hàng của các máy chủ khác, trong ràng buộc dịch vụ và trong các chính sách viết chống lại danh tính.

FieldWhat changes when you replace it
Overlay addressPeers that pinned the old address, service bindings, and any rule written against it
Host nameName-based policy and the identities other hosts expect to see
GroupsWhich access rules match, even if the address stays identical
Validity windowNothing structural, which is why renewal reloads cleanly

Các nhóm xứng đáng có dòng riêng vì chúng gây ra một phiên bản lặng lẽ hơn của cùng sự nhầm lẫn. Một máy chủ giữ nguyên địa chỉ nhưng chuyển nhóm có thể tiếp cận dịch vụ khác sau khi khởi động lại, và một bài kiểm tra chỉ ping địa chỉ cũ sẽ trông hoàn toàn khỏe mạnh trong khi các quyết định truy cập bên dưới đã thay đổi. Hãy kiểm tra một dịch vụ nằm dưới một quy tắc, không chỉ khả năng tiếp cận. Đó là khác biệt giữa xác nhận đường hầm và xác nhận chính sách.

So sánh chứng chỉ đã nạp với bản thay thế

Trước khi cho rằng tiến trình nền đã bỏ qua tệp, hãy đọc cả hai. In chứng chỉ bạn định nạp và xác nhận những trường bạn nghĩ đã thay đổi, sau đó xác nhận rằng cấu hình đang chạy trỏ tới đường dẫn đó chứ không phải một bản sao ở nơi khác.

nebula-cert print -path /etc/nebula/host.crt
systemctl status nebula
ps -o args= -p $(pgrep -f 'nebula -config' | head -1)

Các đối số của tiến trình quan trọng hơn người ta tưởng. Một unit truyền -config /etc/nebula/config.yml sẽ đọc mục pki.cert của tệp đó, và chứng chỉ cài trong thư mục tạm không ảnh hưởng gì. Hãy kiểm tra đường dẫn trong dòng lệnh đang chạy, không phải đường dẫn trong tài liệu bạn đã làm theo. Nếu hai cái khác nhau, bạn đã tìm ra vấn đề mà không cần chạm vào chứng chỉ.

Nếu chứng chỉ mới có địa chỉ khác và tiến trình giữ địa chỉ cũ, giờ bạn có lời giải thích thay vì một bí ẩn. Khởi động lại nếu điều đó chấp nhận được, và coi việc đổi địa chỉ là thay đổi mạng có kế hoạch chứ không phải ngẫu nhiên.

Đổi địa chỉ là thay đổi mạng

Hãy lập kế hoạch như bạn lập kế hoạch chuyển máy. Các máy chủ khác có thể đã ghim địa chỉ cũ trong cấu hình của họ, các dịch vụ có thể ràng buộc rõ ràng vào nó, và các quy tắc tường lửa có thể được viết chống lại nó. Đổi chứng chỉ là di chuyển máy chủ, và di chuyển máy chủ làm vô hiệu các giả định ở nơi khác.

Giữ sẵn một đường quản trị thứ hai trong khi làm việc này, vì kết nối overlay có thể chính là thứ bạn đang làm gián đoạn. Làm việc này qua đúng đường hầm bạn sắp làm đứt là cách kinh điển để biến một thay đổi năm phút thành một chuyến đến tận nơi.

Việc khởi động lại có chấp nhận được hay không phụ thuộc vào những gì máy chủ đang làm, và đó là câu hỏi về lịch trình chứ không phải kỹ thuật. Điều không thể tùy chọn là thừa nhận yêu cầu khởi động lại thay vì gửi lệnh nạp lại lần thứ năm.

Thu hồi thông tin xác thực cũ một cách riêng rẽ

Cài bản thay thế trên một máy duy nhất để mọi máy ngang hàng vẫn tin vào thông tin xác thực mà nó đã biết. Nếu lý do thay đổi là bị xâm phạm, danh tính cũ phải được thu hồi qua quy trình tin cậy hoặc danh sách chặn để các máy ngang hàng thực sự từ chối nó.

Đó là một bước riêng với kiểm chứng riêng: xác nhận từ máy chủ khác rằng danh tính cũ không còn hoạt động, thay vì cho rằng tệp mới đã làm xong việc. Tài liệu cấu hình PKI của Nebula bao gồm các thiết lập có thể nạp lại và giới hạn địa chỉ được mô tả ở đây, và đáng đọc toàn bộ trước khi luân chuyển bất cứ thứ gì hướng tới môi trường sản xuất.

Bài viết liên quan