Gestión de seguridad y usuarios de la base de datos gaussdb [proceso de generación de certificado SSL con openssl] [05]

1. Conceptos relacionados

 
Cifrado simétrico : cifre los datos a través de archivos cifrados y descifre los datos utilizando los mismos archivos cifrados.
Cifrado asimétrico : cifra los datos a través de un archivo cifrado y descifra los datos utilizando otro archivo cifrado.


Cifrado y descifrado : tanto la clave pública como la clave privada se pueden utilizar para cifrar los datos. La situación en la que se utiliza la clave pública para cifrar los datos y luego se descifra la clave privada se denomina cifrado y descifrado.
Firmar y verificar la firma : use la clave privada para cifrar los datos, el descifrado de la clave pública generalmente se denomina firma y verificación de firma.

Descripción:

  • Los datos cifrados con la clave pública solo se pueden desbloquear con su clave privada correspondiente, por lo que puedes dar la clave pública a otras personas y dejar que cifren los datos que quieren enviarte. Estos datos solo pueden llegar a ti con la clave privada Sólo entonces se podrán desbloquear los datos útiles. De la misma manera, si usa su clave privada para firmar datos, solo la clave pública emparejada puede desbloquear los datos. Solo usted tiene la clave privada. Entonces, si la clave pública emparejada desbloquea los datos, significa que usted envía los datos. Al contrario, no lo es. A esto se le llama firma.

  • En las aplicaciones prácticas, generalmente intercambias la clave pública con la otra parte, y luego los datos que deseas enviar a la otra parte se encriptan con su clave pública y, una vez que la obtiene, la desencripta con su clave privada. Los datos que quiere enviarle se cifran con su clave pública y se descifran con su clave privada después de que la obtenga, para garantizar la máxima seguridad.


Algoritmos relacionados con el cifrado asimétrico

RSA : se puede utilizar para cifrar y descifrar. También se puede utilizar para la verificación de firmas.
DSA : solo se puede utilizar para firmas.
SHA / MD5 : No se utiliza para cifrado, descifrado ni firma, se denomina algoritmo de resumen. Se genera un resumen de longitud fija en función del contenido de los datos, y esta cadena de valores de resumen tiene una relación correspondiente con los datos originales. Sin embargo, este resumen no se puede restaurar a los datos originales.

Descripción:

  • En la aplicación real del cifrado SHA / MD5, debido a que los datos a cifrar pueden ser muy grandes, el cifrado requiere mucho tiempo y es laborioso. Por lo tanto, los datos originales generalmente se digieren primero, luego se encripta el valor de resumen y se le pasa el texto sin formato de los datos originales y el valor de resumen encriptado. De esta manera, puede desbloquear el valor de resumen cifrado y compararlo con el valor de resumen de los datos que obtiene, puede saber si los datos se han modificado.

Notario CA

Pregunta : La clave pública general no se transmitirá a otras personas en texto sin formato. En circunstancias normales, se generará un archivo. Este archivo es el archivo de clave pública, y luego este archivo se puede entregar a otras personas para que cifren los datos. Pero si alguien destruye maliciosamente durante el proceso de transmisión, reemplaza su clave pública con su clave pública, y luego la parte que obtiene la clave pública cifra los datos, ¿no puede descifrar los datos con su propia clave privada?

Respuesta : Para resolver este problema, se necesita un notario para hacer esto. Cualquiera puede encontrarlo para confirmar quién emitió la clave pública. Esta es la CA. El principio de la CA que confirma la clave pública también es muy simple: libera su propia clave pública para todos, y luego una persona que quiera liberar su clave pública puede enviar su clave pública y alguna información de identidad a la CA. CA utiliza su propia clave privada para el cifrado, que también se puede denominar aquí firma. Entonces, este archivo que contiene su clave pública y su información se puede llamar archivo de certificado . De esta manera, todos los que obtienen algunos archivos de clave pública. El archivo puede ser descifrado por la clave pública de la CA. Si se descifra normalmente, la información que contiene después del descifrado debe ser verdadera, porque la parte del cifrado solo puede ser una CA. Luego desbloquea el archivo de clave pública y mira la información que contiene para saber si esta es la clave pública que necesita cifrar.

En aplicaciones prácticas, la mayoría de la gente no encontrará una CA para firmar. Debido a que recauda dinero, usted mismo puede crear un archivo de certificado autofirmado. Es generar un par de claves usted mismo y luego usar otro par de claves generado por usted mismo para firmar el par de claves. Esto es solo para personas que realmente necesitan un certificado de firma. El cifrado y descifrado ordinario de datos se puede realizar directamente con claves públicas y privadas.


Descripción del formato de nombre de sufijo

Formato de nombre de sufijo descripción
llave Llave privada
crt Archivo de certificado, abreviatura del certificado
rsc Solicitud de firma de certificado (archivo de solicitud de certificado), que contiene información de clave pública, abreviatura de solicitud de firma de certificado
crl Lista de revocación de certificados, abreviatura de Lista de revocación de certificados
pem El formato del certificado utilizado al exportar e importar el certificado, con el formato del principio y el final del certificado.
crt.pem Certificado exportable

2. Pasos para la generación del certificado raíz de CA

  • Generar clave privada de CA (.key)
  • Generar solicitud de certificado de CA (.csr)
  • Certificado raíz autofirmado (.crt) (certificado emitido por CA)
openssl genrsa -out ca.key 2048 
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

En el trabajo de desarrollo de software real, el servidor a menudo usa este método autofirmado, porque después de todo, encontrar una agencia de firmas de terceros requiere dinero y también tiempo.

3. Pasos para generar un certificado de usuario

  • Generar clave privada (.key)
  • Generar solicitud de certificado (.csr)
  • Firme el certificado con el certificado raíz de CA (.crt)

Certificado de usuario del servidor

openssl genrsa -des3 -out server.key 1024 
openssl req -new -key server.key -out server.csr
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key 

Certificado de usuario cliente

openssl genrsa -des3 -out client.key 1024 
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key

Generar un certificado en formato pem
A veces es necesario utilizar un certificado en formato pem, puede combinar el archivo de certificado (crt) y el archivo de clave privada (clave) para generar

cat client.crt client.key > client.pem
cat server.crt server.key > server.pem

Resultado
Certificado de servidor: ca.crt, server.key, server.crt, server.pem
Certificado de cliente: ca.crt, client.key, client.crt, client.pem

4. Genere un certificado SSL de otra manera

01. Genere su propia CA
en el directorio misc del directorio de instalación de openssl (o en el directorio de aplicaciones), ejecute el script: ./CA.sh -newca (ejecute bajo Windows: perl ca.pl -newca), cuando el indicador aparece (Requiere contraseña + información). Después de la ejecución, se generará un directorio demonCA, que contiene el certificado CA y su clave privada.

./CA.sh -newca
  • Después de ejecutar este comando, se le pedirá que ingrese una contraseña. Este proceso es para generar un par de claves de CA para firmar la solicitud de certificado, que debe tenerse en cuenta.
  • 1024, RSA representa el uso del algoritmo RSA para generar una clave de 1024 bits. Si necesita mejorar la fuerza de la clave (como generar una clave de 2048 bits), puede cambiar el campo default_bits en /usr/ssl/openssl.cnf a 2048.
  • Es importante tener en cuenta que al generar un certificado del lado del servidor o un certificado del lado del cliente, debe asegurarse de que la información que ingrese sea coherente con la de la CA; de lo contrario, la emisión fallará.

02. Generar aplicaciones de certificado de cliente y servidor

Generar solicitud de certificado:

openssl req -newkey rsa:1024 -out req2.pem -keyout server.key
  • El usuario debe complementar la información del certificado, que debe ser consistente con la información básica del certificado de CA. De lo contrario, la firma fallará.
  • En aplicaciones prácticas, los usuarios pueden solicitar un certificado enviando una solicitud de certificado a una CA conocida. Pero aquí, lo que necesitamos establecer es una CA raíz, y solo podemos firmar la solicitud de certificado por nosotros mismos. Entonces permitimos que OpenSSL use la clave adjunta a la solicitud de certificado para firmar la solicitud, que es la llamada "auto firma".

03. Emisión de un certificado

Emisión de certificados:

openssl ca -in req2.pem -out server.crt
  • Para utilizar el certificado de CA generado para firmar una solicitud de certificado de servidor, debe ingresar la clave de CA, con la palabra "Actualización de la base de datos", lo que significa que el certificado se ha emitido correctamente.

04. Procesamiento de la contraseña del archivo de claves

Cuando utilice el siguiente comando para generar una aplicación de certificado en el paso 2), se generará un archivo de clave privada al mismo tiempo:

openssl req -newkey rsa:1024 -out req2.pem -keyout server.key

Cuando se ejecute, se le pedirá que ingrese una contraseña. Esta contraseña se utiliza para cifrar el archivo de claves. En el futuro, deberá ingresar la contraseña cada vez que necesite leer este archivo (a través del comando o API proporcionado por openssl) Si el entorno de almacenamiento del archivo es suficientemente seguro, u otro, también puede eliminar la protección con contraseña del archivo. El comando para eliminar la protección por contraseña es:

openssl rsa -in server.key -out server.key

Si no quita la protección con contraseña, para que GaussDB cargue correctamente el archivo, puede usar la herramienta gs_guc de GaussDB para establecer la contraseña de protección para el archivo de clave. Tomando la contraseña del archivo de claves como gaussdb @ 123 como ejemplo, simplemente ejecute el siguiente comando:

gs_guc encrypt –M server –K gaussdb@123

05. No se pudo emitir el certificado

Pregunta 1 : Al emitir un certificado, incluso si la información del certificado es correcta, la palabra "Actualización de la base de datos" no aparecerá, lo que significa que la emisión se realizó correctamente. En la mayoría de los casos, habrá palabras como "no se pudo actualizar la base de datos" .

Hay dos formas de resolver este problema:
Método 1:
Modifique index.txt.attr en demoCA y
cambie unique_subject = yes a unique_subject = no
Método 2:
Elimine index.txt en demoCA y toque
rm index.txt
touch index .TXT

Pregunta 2 : Aparece el error "No existe tal archivo o directorio".

Este tipo de error generalmente es causado por la ruta incorrecta para ejecutar el comando.Para los errores anteriores, puede saber si hay demoCA en la ruta actual. Si no es así, cambie la ruta para resolverlo.

5. Configuración de gaussdb relacionada con SSL

Parámetros e instrucciones de configuración relacionados con la función ssl del lado del servidor de GaussDB :

ssl = off                              # (change requires restart)
ssl_cert_file = 'server.crt'           # (change requires restart)
ssl_key_file = 'server.key'            # (change requires restart)
ssl_ca_file = ''                       # (change requires restart)
ssl_crl_file = ''

Si desea utilizar la función ssl, primero debe establecer ssl = on y copiar el certificado del lado del servidor y el archivo de clave privada en el directorio de datos (los archivos de certificado y clave privada se denominan server.crt y server.key por predeterminado; de lo contrario, debe modificar ssl_cert_file y ssl_key_file. El valor del archivo de clave privada no debe ser mayor que 0600; de lo contrario, el inicio fallará.

Variables de entorno e instrucciones de configuración relacionadas con la función del cliente ssl :
PGSSLCERT, PGSSLKEY, PGSSLROOTCERT, PGSSLCRL, PGSSLMODE. Las funciones específicas y los métodos de configuración son los siguientes:

Gestión de seguridad y usuarios de la base de datos gaussdb [Conexión TCP / IP segura con SSL] [04]
https://blog.csdn.net/qq_42226855/article/details/109565179

Configurar el enlace de autenticación ssl
Cuando la función ssl está configurada, puede configurar en pg_hba.conf qué enlaces pasan la autenticación ssl y la transmisión cifrada, qué enlaces no pueden utilizar la autenticación ssl y la transmisión cifrada, etc.

Gestión de seguridad y usuarios de la base de datos gaussdb [Autenticación de acceso de cliente] [02]
https://blog.csdn.net/qq_42226855/article/details/109563367

Compruebe la configuración relacionada

  • Las bases de datos primaria y en espera fuerzan la comunicación SSL. Por lo tanto, la caducidad del certificado afectará la sincronización de dos máquinas y es necesario reemplazar el certificado SSL.
  • gsql -d nombrebd -U nombre de usuario -W contraseña -h floatip -p puerto, que indica que se utiliza un certificado.
SSL connection (cipher: AES256-SHA, bits: 256)
Type "help" for help.

XXXXXX=>
  • Verifique si el nombre del certificado en el archivo de configuración es consistente con el valor CN del certificado
grep repl_force postgresql.conf 
repl_force_cert_check = ''
  • Ver el valor CN del certificado
openssl x509 -in server.crt -text

Referencia relacionada
Gestión de seguridad y usuarios de la base de datos gaussdb [Conexión TCP / IP segura con SSL] [04]
https://blog.csdn.net/qq_42226855/article/details/109565179

Supongo que te gusta

Origin blog.csdn.net/qq_42226855/article/details/109578424
Recomendado
Clasificación