Răspunsul meu scurt la întrebarea mea este: Yabadabbadooh.... este posibil și funcționează pe sistemul meu de rezervă!
Nu m-a lăsat să dorm, așa că am început din nou de la zero:
Mai întâi am verificat din nou certificatele vechi și noi pentru orice diferență, singura diferență a fost o ordine diferită în subiect, dar același conținut.
#1
Așa că am făcut un nou root.crt și server.crt cu vechiul rootCa.key și vechiul server.key cu ordinea subiectului identică.
Acum rezultatul textului a fost identic (subiect, algoritm de semnătură...)
#2
Am creat un userCert nou cu root.crt.
#3
Am instalat certificatele în Postgres și am testat -> funcționează.
#4
de data asta am început cu noi certificate pe partea de sus.
cat root_old.crt >> root.crt
cat server_old.crt >> server.crt
cat server_old.key >> server.key
restart postgres ...... Și acum certificatele vechi și noi funcționează!
#5
Verificați invers copiați certificatele vechi peste cele îmbinate și apoi:
cat root_new.crt >> root.crt
cat server_new.crt >> server.crt
cat server_new.key >> server.key
reporniți postgres ...... și nu mai funcționează. Reveniți la pasul 4, totul a funcționat bine din nou.
#6
Lista de revocare: am creat o listă de revocare pentru noile certificate și am instalat-o în postgres. atunci:
cat root_old.crl >> root.crl
a decomentat linia: ssl_crl_file = /root.crl
repornire postgres ......Și totul funcționează bine.
Nu am idee de ce funcționează acum, nu-mi vine să cred că este ordinea subiectului... cred că am greșit altceva în primele încercări. Dar nu voi încerca să aflu, funcționează și asta este :-)
Concluzie:
Faceți root.crt (CA) și server.crt cu chei vechi și cât mai identice posibil. (verificați subiectul și așa)
Îmbinați certificatele, lista de revocare și cheia, astfel încât cele vechi să fie în partea de jos a fișierului
Acum certificatele vechi funcționează până când expiră și puteți crea certificate noi (cu CA nou) cu Tls actualizate, de exemplu.
Câteva informații suplimentare despre versiunea Tls.
Când mi-am actualizat serverul la Ubuntu 2104 și Postgres 13, certificatele nu au funcționat. Am găsit indiciu pentru a adăuga această linie în /etc/ssl/openssl.conf
MinProtocol = TLSv1.0
Știu că acest lucru nu este bun, dar a ajutat pentru moment. Nu am putut găsi o modalitate de a testa dacă certificatele sunt Tlsv1.0 sau mai mare. Singurul test dacă TlsV1.2 folosea pgsql (13) sau pgadmin4, ambele nu vor funcționa cu TlsV1.0
Deci, în fișierul meu de configurare pentru crearea certificatului, folosesc asta:
MinProtocol = TLSv1.2
psql (13) și pgadmin4 funcționează acum cu noile certificate. Când toate cele vechi au expirat, voi schimba din nou /etc/ssl/openssl.conf la acea valoare.
Upgrade-ul la următoarea versiune Tls și-a pierdut mizul :-)