Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

533
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda