>

Kestrel이 HTTPS/SSL을 통해 실행되도록하는ASP.NET Core 버전 1.1응용 프로그램을 구축하고 있습니다. 여기는 Program.cs 입니다  부트 스트랩 코드 ...

public class Program
{
    public static void Main(string[] args)
    {
        var contentRoot = Directory.GetCurrentDirectory();
        var certFilePath = Path.Combine(contentRoot, @"Certificates\Kestrel.pfx");
        // TODO Store password in Secrets
        var certificate = new X509Certificate2(certFilePath, "kr0GEE6lJ5Ok");
        var host = new WebHostBuilder()
            .UseKestrel(cfg => cfg.UseHttps(certificate))
            .UseContentRoot(contentRoot)
            .UseSetting("detailedErrors", "true")
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseUrls("https://localhost:5001/")
            .CaptureStartupErrors(true)
            .Build();
        host.Run();
    }
}

이것은 예상대로 작동하지만 코드에서 인증서의 비밀번호 문자열을 제거하고 싶습니다.

저는 새로운 어쨌든 Secrets Manager 툴 을 사용하지만이 단계에서 애플리케이션 파이프 라인에서이를 참조 할 방법을 찾을 수 없습니다.

이것이 가능합니까? 그렇지 않은 경우 어떤 다른 옵션을 볼 수 있습니까?

감사합니다.


  • 답변 # 1

    Secrets API를 사용할 수 있는지 잘 모르겠습니다. 그러나 환경 변수 또는 appsettings.json 파일에서 비밀번호를 읽을 수 있습니다. 다음은 샘플 코드입니다. .NET Core 1.1과 유사한 .NET Core 2.0 코드를 사용하고 있습니다.

    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddEnvironmentVariables()
                .AddJsonFile("appsettings.json");
            Configuration = builder.Build();
            BuildWebHost(args).Run();
        }
        public static IConfigurationRoot Configuration { get; set; }
        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args).UseKestrel(options =>
            {
                var password = Configuration["certPassword"];
                options.Listen(System.Net.IPAddress.Loopback, 5001, listenOptions =>
                {
                    listenOptions.UseHttps("testCert.pfx", password);
                    listenOptions.UseConnectionLogging();
                });
            })
            .UseStartup<Startup>()
            .Build();
    }
    
    

    도움이 되길 바랍니다.

  • 답변 # 2

    이 기사에서는 콘솔 응용 프로그램에서 사용자 암호를 추가하는 방법을 설명하는 빠른 솔루션입니다.

    // secrets.json (you can access to this file in Visual Studio via right click on your project in Solution Explorer => Manage user secrets)
    {
        "SecretSection": {
            "Secret1": "Value1",
            "Secret2": "Value2"
        }
    }
    // YourSecretSettings.cs
    public class YourSecretSettings
    {
        public string Secret1 { get; set; }
        public string Secret2 { get; set; }
    }
    
    // Program.cs
    public class Program
    {
        public static void Main(string[] args)
        {
            var config = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddEnvironmentVariables()
                .AddJsonFile("appsettings.json", optional: false)
                .AddUserSecrets<YourSecretSettings>()
                .Build();
            var secretSettings = config.GetSection("SecretSection").Get<YourSecretSettings>();
            // Do Something with your secret settings ...
            CreateWebHostBuilder(args)
                .Build()
                .Run();
        }
        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }
    
    

    E Voilà :)

  • 이전 meteor - 쿼리가 유효한 변수를 인식하지 못하는 이유는 무엇입니까?
  • 다음 javascript - angularjs와 이오니아 - 구문 에러 : 예기치 않은 토큰 [