Adición de certificados SSL para contenedor Linux acoplable

votos
1

Comportamiento esperado Ser capaz de hacer HTTPS llama desde dentro del contenedor

El comportamiento real

System.InvalidOperationException: IDX10803: Unable to obtain configuration from: 'https://identity.test.frissplatform.eu/.well-known/openid-configuration'. ---> System.IO.IOException: IDX10804: Unable to retrieve document from: 'https://identity.test.frissplatform.eu/.we
ll-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: SSL connect error

Información Creo que el problema es que mi contenedor no sabe nada acerca de los certificados que deben ser utilizados para esta llamada http. Así que lo que he intentado hacer ellos está proporcionando al propio contenedor a través de la dockerfile que tiene este aspecto:

FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app

#Copy csproj and restore as distinct layers
COPY PublishOutput/. ./

FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app .

COPY Certificates/myCertificate.cer /usr/local/share/ca-certificates/myCertificate
RUN update-ca-certificates

ENTRYPOINT [dotnet, CaseApi.Web.dll]

Dentro de la PublishOutput carpeta sólo tengo todos los archivos DLL de mi API .NET básico que se necesita para ejecutar el interior del contenedor del estibador.

Cuando construyo el dockerfile que dice:

Step 8/9 : RUN update-ca-certificates
 ---> Running in b025a42f2edc
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

que me hace pensar que el certificado que desea utilizar no está siendo realmente utilizado. ¿Qué estoy haciendo mal? ¡Gracias por adelantado!

Publicado el 13/07/2018 a las 10:01
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0

Es probable que el problema está en update-ca-certificates. El comando sólo procesa archivos con la extensión .crt. Desde su página de manual:

Los certificados deben tener una extensión .crt con el fin de ser incluido por update-ca-certificados.

Así que basta con añadir esta extensión cuando se copia del certificado en el Dockerfile:

COPY Certificates/myCertificate.cer /usr/local/share/ca-certificates/myCertificate.crt
Respondida el 13/07/2018 a las 11:45
fuente por usuario

votos
0

Pasos a seguir:

1) Asegúrese de que la extensión de los certificados es .crt

2) Abrir los certificados a Notepad ++ o similares

3) Copia de los certificados en / / share / CA-certificados / usr / local. El update-ca-certificados comando lee los certificados de esa carpeta: http://manpages.ubuntu.com/manpages/trusty/man8/update-ca-certificates.8.html

4) Después de estos pasos que construyen la dockerfile deberían dar lugar a no decir nunca más 0 añadido, 0 suprimidos; pero 1 añadido, 0 suprimidos; o similares, dependiendo del número de certificados que añade

5) solución puede no ser allí todavía. Certificados dependen de una jerarquía de otros certificados. Estoy en ventanas y yendo al gestor de certificados puedo ver que mi certificado depende de 2 más altas (esto se muestra en la Ruta de certificación):

Ruta de certificación

Por lo tanto, es necesario estar seguro de poner en / usr / local / share / CA-certificados / todos los certificados de la jerarquía.

6) Sin embargo, ustedes podrían estar pensando para pasar los certificados de derecho pero tal vez no lo son. En mi caso IdentityServer estaba alojado en IIS, en los enlaces pude ver que de hecho se espera IdentityServer llamadas a través de HTTPS y haciendo doble clic sobre el enlace que pude ver el certificado que IdentityServer requiere para aceptar la llamada.

Respondida el 26/07/2018 a las 12:02
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more