>source

Windows 코어 컨테이너 내에서 실행 해야하는 Dotnet Core 앱이 있으며 443 포트 (HTTPS) 노출

인증서를 컨테이너에 전달하고 사용자 경로와 암호의 환경 변수를 설정합니다. 응용 프로그램은 DE 인증서를 찾을 수 있지만 다음 오류로 실패합니다.

crit: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to start Kestrel.
      Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Object was not found.

인증서는 localhost 도메인을위한 SEFT 서명 된 인증서입니다.

Docker 컨테이너에 서버 로컬 호스트를 추가하려고하지만 작동하지 않았습니다.

해당 문제가 명시 적 오류를 제공하기 때문에 인증서 암호 또는 인증서 위치에 문제가 없습니다.

여기서 Docker 관련 구성 파일 :

DockerFile :

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 443
VOLUME c:/certificates
COPY . .
#place to put the https certificate
ENV ASPNETCORE_URLS="https://+:443"
ENV ASPNETCORE_HTTPS_PORT=8243
ENTRYPOINT ["dotnet", "webApp.dll"]

docker-compose.yaml 파일 :

version: '3.4'
services:
  webApp:
    container_name:  webApp
    build:
      context: ..\webApp\
      dockerfile: Dockerfile
    volumes:
     -type: bind
       source: d:/certificates
       target: c:/certificates
    environment:
     -ASPNETCORE_Kestrel__Certificates__Default__Password=somepass
     -ASPNETCORE_Kestrel__Certificates__Default__Path=c:\certificates\servercert.pfx
    ports:
      -"8243:443"
    extra_hosts:
     -"localhost:127.0.0.1"
    networks:
       -net
networks:
  net:

실행 방법 :

docker-compose run wepApp

전체 오류 스택 :

crit: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to start Kestrel.
      Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Object was not found.
         at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(ReadOnlySpan`1 rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags)
         at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(ReadOnlySpan`1 rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
         at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)
         at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password)
         at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Certificates.CertificateConfigLoader.LoadCertificate(CertificateConfig certInfo, String endpointName)
         at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.LoadDefaultCert()
         at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Reload()
         at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Load()
         at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken)
         at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)
Unhandled exception. Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: Object was not found.
   at Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(ReadOnlySpan`1 rawData, SafePasswordHandle password, PfxCertStoreFlags pfxCertStoreFlags)
   at Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(ReadOnlySpan`1 rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags)
   at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName, String password, X509KeyStorageFlags keyStorageFlags)
   at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Certificates.CertificateConfigLoader.LoadCertificate(CertificateConfig certInfo, String endpointName)
   at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.LoadDefaultCert()
   at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Reload()
   at Microsoft.AspNetCore.Server.Kestrel.KestrelConfigurationLoader.Load()
   at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at Backoffice.Program.Main(String[] args) in D:\a\1\s\BackOffice\Program.cs:line 12

HTTPS를 사용하여 Windows 컨테이너에서 DotNet Core를 실행하면 문제가 발생하면 기본 사항을 누락해야합니다. 평범하지 않은 것은 없습니다.

  • 답변 # 1

    사용자와 컨테이너 실행으로 해결됨ContainerAdministrator

    항상 표면이 아닌 문제는 항상 사용되는 이미지와 관련이 있습니다. 이 문제 수표에 대한 자세한 내용은 github.

    docker-compose.yaml 파일에 사용자를 설정하려면 다음을 추가합니다.

    services:
       wepApp:
          user:  "ContainerAdministrator"
    

    명령 줄에서 설정하려면 다음을 수행하십시오.

    > docker-compose run --user ContainerAdministrator wepApp
    

  • 이전 스파크가 전체 하이브 테이블을 메모리에 가져옵니다
  • 다음 r은 GGPLOT에서 단 하나의 막대 만 강조 표시합니다