คำตอบสั้น ๆ ของฉันสำหรับคำถามของฉันคือ: Yabadabbadoo....เป็นไปได้และใช้งานได้กับระบบสำรองข้อมูลของฉัน!
มันไม่ยอมให้ฉันหลับ ฉันเลยเริ่มใหม่ตั้งแต่เริ่มต้น:
อันดับแรก ฉันตรวจสอบใบรับรองเก่าและใหม่เพื่อหาข้อแตกต่างอีกครั้ง ข้อแตกต่างเพียงอย่างเดียวคือลำดับในหัวเรื่องต่างกัน แต่เนื้อหาเหมือนกัน
#1
ดังนั้นฉันจึงสร้าง root.crt และ server.crt ใหม่ด้วย rootCa.key เก่าและ server.key เก่าที่มีลำดับหัวเรื่องที่เหมือนกัน
ตอนนี้เอาต์พุตข้อความก็เหมือนกัน (หัวเรื่อง, อัลกอริทึมลายเซ็น ....)
#2
ฉันสร้าง userCert ใหม่ด้วย root.crt
#3
ฉันติดตั้งใบรับรองใน Postgres และทดสอบ -> ใช้งานได้
#4
คราวนี้ฉันเริ่มด้วยใบรับรองใหม่ที่ด้านบน
แมว root_old.crt >> root.crt
แมว server_old.crt >> server.crt
cat server_old.key >> server.key
postgres เริ่มต้นใหม่ ...... และตอนนี้ใบรับรองเก่าและใหม่กำลังทำงาน!
#5
ตรวจสอบวิธีอื่นในการคัดลอกใบรับรองเก่าที่ผสานแล้ว:
แมว root_new.crt >> root.crt
cat server_new.crt >> server.crt
cat server_new.key >> server.key
postgres รีสตาร์ท ...... และไม่ทำงานอีกต่อไป ย้อนกลับไปที่ขั้นตอนที่ 4 ทุกอย่างทำงานได้ดีอีกครั้ง
#6
รายการเพิกถอน: ฉันสร้างรายการเพิกถอนสำหรับใบรับรองใหม่และติดตั้งใน postgres แล้ว:
แมว root_old.crl >> root.crl
ไม่แสดงความคิดเห็นบรรทัด: ssl_crl_file = /root.crl
รีสตาร์ท postgres ......และทุกอย่างทำงานได้ดี
ฉันไม่รู้ว่าทำไมมันถึงใช้งานได้ในตอนนี้ ฉันไม่อยากจะเชื่อเลยจริงๆว่ามันเป็นคำสั่งเรื่อง ... เดาว่าฉันทำอย่างอื่นผิดในการลองครั้งแรก แต่ฉันจะไม่พยายามค้นหา มันใช้งานได้ และนั่นคือมัน :-)
บทสรุป:
สร้าง root.crt (CA) และ server.crt ด้วยคีย์เก่าและเหมือนกันมากที่สุด (ตรวจสอบเรื่องและอื่น ๆ )
รวมใบรับรอง รายการเพิกถอน และคีย์ เพื่อให้ใบรับรองเก่าอยู่ที่ด้านล่างของไฟล์
ขณะนี้ใบรับรองเก่ากำลังทำงานจนกว่าจะหมดอายุ และคุณสามารถสร้างใบรับรองใหม่ (พร้อม CA ใหม่) ด้วย Tls ที่อัปเกรดแล้วได้
ข้อมูลเพิ่มเติมบางอย่างเกี่ยวกับเวอร์ชัน Tls
เมื่อฉันอัปเกรดเซิร์ฟเวอร์เป็น Ubuntu 2104 และ Postgres 13 ใบรับรองไม่ทำงาน ฉันพบคำใบ้ให้เพิ่มบรรทัดนี้ใน /etc/ssl/openssl.conf
โปรโตคอลขั้นต่ำ = TLSv1.0
ฉันรู้ว่ามันไม่ดี แต่ช่วยได้ในขณะนี้ ฉันไม่พบวิธีทดสอบว่าใบรับรองเป็น Tlsv1.0 หรือสูงกว่า การทดสอบเพียงอย่างเดียวว่า TlsV1.2 ใช้ pgsql (13) หรือ pgadmin4 ทั้งคู่จะไม่ทำงานกับ TlsV1.0
ดังนั้นในไฟล์ปรับแต่งสำหรับการสร้างใบรับรอง ฉันใช้สิ่งนี้:
โปรโตคอลขั้นต่ำ = TLSv1.2
psql (13) และ pgadmin4 ทำงานร่วมกับใบรับรองใหม่ได้แล้ว พออันเก่าหมดก็เปลี่ยน /etc/ssl/openssl.conf เป็นค่านั้นใหม่
อัปเกรดเป็นเวอร์ชัน Tls ถัดไปได้สูญเสียการต่อย :-)