Мой краткий ответ на мой вопрос: Yabadabbadooh... это возможно и работает на моей системе резервного копирования!
Это не давало мне спать, поэтому я начал снова с нуля:
Сначала я снова проверил старые и новые сертификаты на наличие различий, единственная разница заключалась в другом порядке в теме, но том же содержании.
#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
кошка server_new.crt >> server.crt
кошка server_new.key >> server.key
перезапуск postgres ...... и он больше не работает. Вернитесь к шагу 4, все снова работает хорошо.
#6
Список отзыва: я создал список отзыва для новых сертификатов и установил его в postgres. тогда:
кошка root_old.crl >> root.crl
раскомментировал строку: ssl_crl_file = /root.crl
перезапуск постгреса....И все работает нормально.
Я понятия не имею, почему это работает сейчас, я не могу поверить, что это порядок предметов ... думаю, я сделал что-то еще не так в первых попытках. Но я не буду пытаться выяснить, это работает и все :-)
Заключение:
Сделайте root.crt (CA) и server.crt со старыми ключами и максимально идентичными. (проверьте тему и тому подобное)
Объедините сертификаты, список отзыва и ключ так, чтобы старые были в нижней части файла.
Теперь старые сертификаты работают до истечения срока их действия, и вы можете создавать новые сертификаты (с новым ЦС), например, с обновленными 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 потеряло свою актуальность :-)