Saltar a contenido

Renovar los certificados de clúster de PostgreSQL

Preparaciones

Renovación del certificado

Antes de realizar cualquier acción en los nodos de clúster de PostgreSQL, por favor prepare nuevos certificados para cada uno de los nodos de clúster. Como recordatorio, los certificados deben cumplir con varias restricciones especificadas en los requisitos previos de clúster de PostgreSQL {target="_blank"}.

Si desea realizar el cambio a la ligera sin afectar a la producción, debe cumplir las siguientes condiciones:

  • La autoridad de certificación no ha sido renovada desde la última generación de certificados de nodo PostgreSQL
  • La autoridad de certificación no expirará durante el período de validez de los nuevos certificados
  • Todavía puede generar y firmar certificados con la misma autoridad de certificación que se utilizó cuando se generaron los certificados de nodo PostgreSQL anteriores
  • Los certificados de nodo PostgreSQL aún no han expirado

Si se cumplen estas condiciones, puede considerar la posibilidad de renovar los certificados a la vez sin interrumpir la producción.

Para regenerar certificados utilizando el openssl PKI indicado, opcionalmente, en la documentación de instalación del clúster PostgreSQL {target="_blank"}, debe reutilizar la clave de autoridad de certificación y luego volver a reproducir los comandos de generación de certificados.

Si no es posible renovar los certificados al instante y utiliza un PKI a través de openssl, le recomendamos que cree uno nuevo {target="_blank"}.

Elaboración de los certificados

Tendrá que enviar en /tmp/ el certificado de autoridad de certificación raíz con una extensión .crt a cada uno de los nodos PostgreSQL.

También tendrá que enviar /tmp/ el certificado y su clave privada asociada a cada uno de los nodos PostgreSQL. Si sólo tiene uno .p12 archivo disponible, ejecute los siguientes comandos para extraer el certificado (psql.crt) y la clave privada (psql.key):

1
2
openssl pkcs12 -clcerts -nokeys -out psql.crt -in P12_CERT
openssl pkcs12 -nocerts -out psql.key -in P12_CERT

Por favor, reemplace en los comandos P12_CERT anteriores con el nombre de su archivo de certificado .p12.

Renovación del certificado

Warning

Si puede y desea actualizar los certificados en tiempo real sin interrumpir la producción, deberá:

Para simplificar las siguientes acciones, por favor personalizar las variables en los comandos a continuación con sus valores (modificar la personalización para cada nodo PostgreSQL):

Valor Variable Definición
PSQL_CERT Certificado nuevo para el nodo PostgreSQL.
PSQL_KEY Clave asociada con el nuevo certificado de nodo PostgreSQL.
PSQL_CA Certificado de la autoridad de certificación raíz que se utilizó para generar el certificado de nodo PostgreSQL.

Conecte a través de SSH como root al nodo PostgreSQL cuyos certificados desea actualizar y ejecute los siguientes comandos para reemplazar los certificados:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
cp /tmp/PSQL_CERT /etc/etcd/peer.crt
cp /tmp/PSQL_CERT /etc/etcd/client.crt
cp /tmp/PSQL_CERT /etc/patroni/client.crt
cp /tmp/PSQL_KEY /etc/etcd/peer.key
cp /tmp/PSQL_KEY /etc/etcd/client.key
cp /tmp/PSQL_KEY /etc/patroni/client.key
cp /tmp/PSQL_CA /etc/etcd/ca.crt
cp /tmp/PSQL_CA /etc/patroni/ca.crt
cp /tmp/PSQL_CA /usr/local/share/ca-certificates/PSQL-CA-`date +%G-%m-%d`.crt
update-ca-certificates

Para finalizar los cambios de certificado, debe reiniciar el nodo PostgreSQL:

1
reboot