• asp.net core 配置证书身份验证


    让服务器配置为可以接受客户端证书的方法    

    Microsoft.AspNetCore.Authentication.Certificate

                services.AddAuthentication(CertificateAuthenticationDefaults.AuthenticationScheme)
                .AddCertificate()
                .AddCertificateCache();

    生成证书请看

    https://www.cnblogs.com/buchizaodian/p/15483758.html

    Kestrel服务端配置证书

    服务端

     GrpcService1 是项目名称,crypticpassword是密码

        public class Program
        {
            public static void Main(string[] args)
            {
                CreateHostBuilder(args).Build().Run();
            }
            public static IHostBuilder CreateHostBuilder(string[] args) =>
                        Host.CreateDefaultBuilder(args)
                            .ConfigureWebHostDefaults(webBuilder =>
                            {
                                webBuilder.UseKestrel(option =>
                                {
                                    option.ConfigureHttpsDefaults(i =>
                                    {
                                        i.ServerCertificate = new System.Security.Cryptography.X509Certificates.X509Certificate2("./GrpcService1.pfx", "crypticpassword");
                                    });
                                }).UseStartup<Startup>().UseUrls("http://*:5000;https://*:5001");
                            });
        }

     报这个错误是因为证书不受信任

    IIS服务端配置证书

    自定义 web 代理中使用证书身份验证 

    如nginx

    客户端使用证书+grpc

                var cert = new X509Certificate2("./GrpcService1.pfx", "crypticpassword");
                var handler = new HttpClientHandler();
                handler.ClientCertificates.Add(cert);
                //来允许在没有受信任证书的情况下进行调用
                handler.ServerCertificateCustomValidationCallback =HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
                var channel = GrpcChannel.ForAddress("https://127.0.0.1:5001", new GrpcChannelOptions
                {
                    HttpHandler = handler
                });
                var client = new Greeter.GreeterClient(channel);
                HelloRequest helloRequest = new HelloRequest();
                helloRequest.Name = "Tom";
    
                HelloReply helloReply = new HelloReply();
    
                Random random = new Random();
                while (true)
                {
                    Thread.Sleep(1000);
    
                    helloRequest.Name = random.Next().ToString();
                    helloReply = client.SayHello(helloRequest);
                }

     

  • 相关阅读:
    Linux基础(一)
    计算机基础之网络基础
    计算机基础之操作系统
    计算机基础之计算机硬件基础
    .NET Reflector 8.2支持VS2013高亮显示和代码地图视图
    jQuery图表开源软件
    8个实用的页面布局和用户界面jQuery插件
    关于mvc3.0RadioButtonFor的使用
    链式调用-python
    给实数用千分位方法输出结果
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/15481162.html
Copyright © 2020-2023  润新知