Điểm:0

Nâng cấp / gia hạn chứng chỉ máy chủ SSL Postgres với openssl

lá cờ ms

Tôi đã kế thừa Máy chủ Postgres của Công ty với ứng dụng khách SSL. Nó có khoảng 100 người dùng cho đến nay.

Hai vấn đề: Chứng chỉ Ca của tôi (root.crt) sẽ hết hạn vào năm tới và có vẻ như nó vẫn là TlsV1.0. Vì vậy, việc nâng cấp (gia hạn) là rất cần thiết.

Điều tôi nên tránh là tạo chứng chỉ ứng dụng khách mới cho tất cả người dùng trong một. Nó sẽ trở thành một cơn ác mộng đối với tôi :-)

Vì vậy, tôi đã tìm kiếm một giải pháp trong đó Chứng chỉ cũ và mới sẽ hoạt động cho đến khi tất cả các chứng chỉ cũ hết hạn. Tôi thích rất nhiều gợi ý (cũng trên Serverfault), nhưng cho đến nay vẫn chưa có gì hiệu quả.

Những gì tôi đã làm cho đến nay: Tôi sử dụng khóa ca cũ (rootCa.key) và tạo một root.crt mới, đồng thời tôi sử dụng khóa máy chủ cũ (server.key) để tạo một server.crt mới. Tôi đã cài đặt danh sách thu hồi (root.crl),root.crt, server.crt và server.key trên Máy chủ sao lưu Postgres của mình.

Tôi có thể kết nối với chứng chỉ newUser.crt, nhưng không thể kết nối với chứng chỉ cũ.... như tôi mong đợi.

Tôi đã tìm kiếm trên web như địa ngục và tìm thấy một gợi ý để hợp nhất Chứng chỉ cũ và mới trên máy chủ. Vì vậy, tôi đã kết hợp các certs với cat: cat oldRoot.crt >> root.crt cho các tệp khác. Danh sách thu hồi không hoạt động, vì vậy tôi đã nhận xét Dòng: #ssl_crl_file = trong Postgres.conf. Có vẻ như Postgres cũng hoạt động mà không có danh sách thu hồi.

Kết quả: Tùy thuộc vào chứng chỉ nào có trước trong server.crt, tôi có thể kết nối với chứng chỉ cũ hoặc chứng chỉ mới, nhưng không bao giờ với cả hai. Để kiểm tra nó, tôi đã sử dụng root.crt đã hợp nhất với oldServer.cert và cả với newServer.cert. Cả hai đều làm việc với mới hoặc cũ.

Điều đó có nghĩa là root.crt đã hợp nhất đang hoạt động tốt, nhưng server.crt đã hợp nhất thì không.

Tôi đã kiểm tra nó với openssl và root.crt đã hợp nhất và server.crt đã hợp nhất: openssl verify -verbose -x509_strict -CAfile root.crt -CApath . old_cert.crt server.crt old_cert.crt: Được rồi máy chủ.crt: OK

openssl verify -verbose -x509_strict -CAfile root.crt -CApath . new_cert.crt server.crt new_cert.crt: OK máy chủ.crt: OK

Có vẻ như openssl có thể quản lý các chứng chỉ đã hợp nhất, nhưng không phải Postgres.

Bất cứ ý tưởng làm thế nào để giải quyết vấn đề này?

Bất kỳ gợi ý được đánh giá cao.

Trân trọng Schlauchi

máy chủ: Ubuntu 2104, Postgres13 máy chủ dự phòng: Ubuntu 1604, Postgres13

Điểm:0
lá cờ ms

Câu trả lời ngắn gọn của tôi cho câu hỏi của tôi là: Yabadabbadooh.... có thể và hoạt động trên hệ thống dự phòng của tôi!

Nó không cho phép tôi ngủ, vì vậy tôi bắt đầu lại từ đầu: Đầu tiên, tôi kiểm tra lại các chứng chỉ cũ và mới xem có sự khác biệt nào không, điểm khác biệt duy nhất là thứ tự khác nhau trong chủ đề, nhưng nội dung giống nhau.

#1 Vì vậy, tôi đã tạo một root.crt và server.crt mới với rootCa.key cũ và server.key cũ với thứ tự chủ đề giống hệt nhau. Bây giờ đầu ra văn bản giống hệt nhau (chủ đề, Thuật toán chữ ký....)

#2 Tôi đã tạo một userCert mới với root.crt.

#3 Tôi đã cài đặt các chứng chỉ trong Postgres và đã thử nghiệm -> hoạt động.

#4 lần này tôi bắt đầu với các chứng chỉ mới ở trên cùng.

mèo root_old.crt >> root.crt
mèo server_old.crt >> server.crt
mèo server_old.key >> server.key

khởi động lại postgres ...... VÀ bây giờ các chứng chỉ cũ và mới đang hoạt động!

#5 Kiểm tra theo cách khác xung quanh sao chép các chứng chỉ cũ qua hợp nhất và sau đó:

mèo root_new.crt >> root.crt
mèo server_new.crt >> server.crt
mèo server_new.key >> server.key

khởi động lại postgres ...... và nó không còn hoạt động nữa. Quay lại bước 4, tất cả đã hoạt động tốt trở lại.

#6 Danh sách thu hồi: Tôi đã tạo danh sách thu hồi cho các chứng chỉ mới và cài đặt nó trong postgres. sau đó:

mèo root_old.crl >> root.crl

bỏ ghi chú Dòng: ssl_crl_file = /root.crl khởi động lại postgres ......VÀ tất cả đều hoạt động tốt.

Tôi không biết tại sao nó lại hoạt động bây giờ, tôi thực sự không thể tin được thứ tự chủ đề của nó... đoán rằng tôi đã làm sai điều gì đó khác trong lần thử đầu tiên. Nhưng tôi sẽ không cố gắng tìm hiểu, nó hoạt động và đó là nó :-)

Phần kết luận:

Tạo root.crt (CA) và server.crt bằng các khóa cũ và giống hệt nhau nhất có thể. (kiểm tra chủ đề và như vậy)

Hợp nhất các chứng chỉ, danh sách thu hồi và khóa để những cái cũ nằm ở cuối tệp

Bây giờ các chứng chỉ cũ đang hoạt động cho đến khi chúng hết hạn và bạn có thể tạo chứng chỉ mới (với CA mới) với Tls được nâng cấp chẳng hạn.

Một số thông tin bổ sung về Phiên bản Tls. Khi tôi nâng cấp máy chủ của mình lên Ubuntu 2104 và Postgres 13, Chứng chỉ không hoạt động. Tôi đã tìm thấy gợi ý để thêm dòng này vào /etc/ssl/openssl.conf

Giao thức tối thiểu = TLSv1.0

Tôi biết điều này là không tốt, nhưng đã giúp cho thời điểm này. Tôi không tìm được cách kiểm tra xem chứng chỉ có phải là Tlsv1.0 trở lên hay không. Thử nghiệm duy nhất nếu TlsV1.2 của nó đang sử dụng pgsql (13) hoặc pgadmin4, cả hai sẽ không hoạt động với TlsV1.0

Vì vậy, trong tệp cấu hình của tôi để tạo chứng chỉ, tôi sử dụng tệp này:

MinProtocol = TLSv1.2

psql (13) và pgadmin4 hiện hoạt động với các chứng chỉ mới. Khi tất cả những cái cũ hết hạn, tôi sẽ thay đổi lại /etc/ssl/openssl.conf thành giá trị đó.

Nâng cấp lên phiên bản Tls tiếp theo đã bị mất ngòi :-)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.