Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

538
Vistas
¿Cómo ejecutar la aplicación principal ASP.net acoplada generada por Visual Studio 2019 en Linux? Problema con la configuración de SSL

Creé un nuevo proyecto ASP.net Core 2.1 en Visual Studio 2019. Elegí generar el contenedor Docker Linux y el archivo docker-compose. Todo funciona bien cuando uso VS para ejecutarlo.

El problema aparece cuando trato de ejecutar mi aplicación en un entorno de producción. Para hacer eso, he clonado código git en la máquina linux de targeter. Luego ejecuto docker-compose up en la carpeta de mi proyecto.

Al principio no funcionó porque la aplicación usa HTTPS y no había certificados HTTPS para localhost en la máquina. Necesitaba generar el certificado:

 dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p crypticpassword

En docker-compose.yml , especifiqué un volumen para vincular la carpeta con el certificado a la carpeta dentro del contenedor docker donde mi aplicación busca certificados (última línea del código a continuación).

 version: '3.4' services: mongo: # not relevant mongo-express: # not relevant synceddb: image: ${DOCKER_REGISTRY-}synceddb ports: - 13000:13000 - "10002:80" - "44361:443" build: context: . dockerfile: SyncedDB/Dockerfile depends_on: - mongo environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=https://+:443;http://+:80 - ASPNETCORE_HTTPS_PORT=44361 - ASPNETCORE_Kestrel__Certificates__Default__Password="crypticpassword" - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx volumes: - ${HOME}/.aspnet/https:/https/

Dockerfile tiene el siguiente aspecto:

 FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/core/sdk:2.1-stretch AS build WORKDIR /src COPY ["SyncedDB/SyncedDB.csproj", "SyncedDB/"] RUN dotnet restore "SyncedDB/SyncedDB.csproj" COPY . . WORKDIR "/src/SyncedDB" RUN dotnet build "SyncedDB.csproj" -c Release -o /app FROM build AS publish RUN dotnet publish "SyncedDB.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "SyncedDB.dll"]

El problema es: mi aplicación no ve mi certificado (al menos así es como interpreto este error)

crítico: Microsoft.AspNetCore.Server.Kestrel[0]

No se puede iniciar Kestrel.

Interop+Crypto+OpenSslCryptographicException: error:2006D080:rutinas BIO:BIO_new_file:no existe tal archivo

en [...]

Excepción no controlada: Interop+Crypto+OpenSslCryptographicException: error:2006D080:BIO rutinas:BIO_nuevo_archivo:no existe tal archivo

[...]

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Vale, ¡lo descubrí! Siga los pasos exactos a continuación. Garantizado que esto funcionará para usted... así que aquí va...

en CLI, en el directorio raíz de su aplicación, ejecute los siguientes comandos en el mismo orden que se muestra a continuación:

 $ mkdir conf.d $ dotnet dev-certs https --clean $ dotnet dev-certs https -ep ./conf.d/https/dev_cert.pfx -p madison $ dotnet dev-certs https --trust

Asegúrese de que el archivo dev_cert.pfx esté disponible en la carpeta ./conf.d/https. Ahora, en su archivo docker-compose, modifique su servicio api para que se vea como se muestra a continuación:

 ... api: container_name: mad.api build: context: . dockerfile: Dockerfile environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=https://+:443;http://+80 - ASPNETCORE_HTTPS_PORT=44311 - ASPNETCORE_Kestrel__Certificates__Default__Password=madison - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/dev_cert.pfx ports: - "50420:80" - "44361:443" volumes: - ./conf.d/https/:/https/ networks: - mad_network ... $ docker-compose down # Down any previous setup $ docker-compose up --build -d # Build and run containers $ docker-compose ps # Check status of api..make sure its "up" $ docker-compose logs -f api # Check logs

¡¡Ahora, prueba cualquiera de estas URL y comprueba que funcionan!! (Nota: es posible que no tenga un punto final de pronóstico del tiempo en su código... use el apropiado o recibirá un 404

http://localhost:50420/pronóstico del tiempo https://localhost:44361/pronóstico del tiempo

(La razón por la que no funcionó para mí fue porque cuando ejecuté dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p { password here } estaba creando el pfx con un nombre extraño en mi directorio raíz y no en la ubicación especificada en el argumento -ep. Ahora estoy usando asp.net core 3.0. Este comando funcionó bien anteriormente en asp.net core 2.2. ¡Así que algo debe haber cambiado entre 2.2 y 3.0! También parece interesante como asp.net core 3.0 se deshizo del proyecto docker-compose, ¡lo cual es una gran bendición! :oren: #bendito)

over 4 years ago · Santiago Trujillo Denunciar

0

Finalmente lo arreglé. Dos errores en mi configuración:

1: comillas innecesarias en la contraseña del certificado

Había:

 - ASPNETCORE_Kestrel__Certificates__Default__Password="crypticpassword"

Debiera ser:

 - ASPNETCORE_Kestrel__Certificates__Default__Password=crypticpassword

2: la aplicación estaba buscando un certificado en un lugar equivocado.

Estaba usando docker con sudo , como root, pero generé un certificado usando una cuenta común. Pensé que ${HOME} apuntaría a mi carpeta de inicio, pero en su lugar apuntaba a la carpeta raíz.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda