GitLab ofrece una lista de certificados de 1 certificado

GitLab ofrece una lista de certificados de 1 certificado

Estoy intentando ejecutar el instalador general de GitLab y utilizar el certificado SSL de mi organización, pero los clientes SSL se quejan de que se desconoce el emisor del certificado. ¿Cómo se supone que debo configurar certificados intermedios en la cadena de confianza?

Mi configuración comienza ejecutando la última versión de GitLab, exponiendo puertos para HTTPS y HTTP, entre otros:

sudo docker run --detach --hostname myserver.myorg.org --publish 1443:443 --publish 1080:80 \
--publish 2222:22 --publish 5005:5005 --name gitlab1 \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:14.2.3-ce.0

Eso crea un montón de configuraciones predeterminadas en /srv/gitlab/config, así que voy y configuro la URL del servidor en gitlab.rb:

external_url 'https://myserver.myorg.org'

Recibí un archivo de certificado y un archivo de clave de mi organización, así que los copio al /srv/gitlab/config/ssldirectorio como myserver.myorg.org.crty myserver.myorg.org.key. Luego reconfigure el servidor GitLab:

sudo docker exec -it gitlab1 bash -c "gitlab-ctl reconfigure"

Ahora intento validar la configuración SSL:

echo | gnutls-cli -p1443 myserver.myorg.org

Recibo un montón de errores en el resultado, incluidos estos:

...
Processed 129 CA certificate(s).
Resolving 'myserver.myorg.org:1443'...
Connecting to '127.0.0.1:1443'...
- Certificate type: X.509
- Got a certificate list of 1 certificates.
...
- Status: The certificate is NOT trusted. The certificate issuer is unknown. 
*** PKI verification of server certificate failed...
*** Fatal error: Error in the certificate.

Parece que no tengo la cadena de confianza completa. El emisor del certificado de nuestra organización es "CN=DigiCert TLS RSA SHA256 2020 CA1,O=DigiCert Inc,C=US". Encontré sus certificados ensu página web, y descargué ese específico:

wget https://cacerts.digicert.com/DigiCertTLSRSASHA2562020CA1-1.crt.pem

Extraje la versión de texto del certificado:

openssl x509 -in DigiCertTLSRSASHA2562020CA1-1.crt.pem -text
...
-----BEGIN CERTIFICATE-----
MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh
...
A7sKPPcw7+uvTPyLNhBzPvOk
-----END CERTIFICATE-----

Lo agregué al certificado de mi organización para /srv/gitlab/config/ssl/myserver.myorg.org.crtque ahora tenga primero el certificado de la organización y luego el certificado Digicert.

-----BEGIN CERTIFICATE-----
... our organization's certificate ...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... Digicert certificate I just downloaded
-----END CERTIFICATE-----

Este es el paso en el que menos estoy seguro. me estoy basando en elInstrucciones de GitLab:

Asegúrese de utilizar la cadena de certificados completa para evitar errores de SSL cuando los clientes se conecten. El orden completo de la cadena de certificados debe constar primero del certificado del servidor, seguido de todos los certificados intermedios y, al final, de la CA raíz.

¿Eso significa simplemente unir los dos certificados en el mismo archivo?

De todos modos, ejecuté el reconfigurecomando y probé nuevamente:

sudo docker exec -it gitlab1 bash -c "gitlab-ctl reconfigure"
...
echo | gnutls-cli -p1443 myserver.myorg.org

Sigo recibiendo los mismos errores, incluido "Obtuve una lista de certificados de 1 certificado". Eso me hace pensar que no agregué correctamente el certificado Digicert a la cadena. También intenté anteponer el certificado Digicert al certificado de nuestra organización.

Solo para asegurarme de que los certificados sean válidos, seguíesta publicación. Y funcionaron bien juntos, así que creo que el problema es mi configuración de GitLab openssl s_server.openssl s_client

Respuesta1

Cuando leo elDocumentación de GitLabMás de cerca, me di cuenta de que había entendido mal la diferencia entre reconfigurey hup nginx.

Si el contenido de sus certificados SSL se actualizó, pero no se realizaron cambios de configuración en gitlab.rb, la reconfiguración de gitlab-ctl no afectará a NGINX. En su lugar, ejecute Sudo gitlab-ctl hup nginx para que NGINX recargue la configuración existente y los nuevos certificados correctamente.

Pensé reconfigureque haría todo y hup nginxmucho más. Resulta que reconfigureno notará ningún cambio en los archivos del certificado si no ha cambiado nada en el /srv/gitlab/config/gitlab.rbarchivo.

Solucioné mi problema ejecutando este comando después de agregar el certificado intermedio a /srv/gitlab/config/ssl/myserver.myorg.org.crt:

sudo docker exec -it gitlab1 bash -c "gitlab-ctl hup nginx"

información relacionada