首页 > 其他分享 >Maui+blazor中使用https时信任所有证书

Maui+blazor中使用https时信任所有证书

时间:2024-06-07 16:10:50浏览次数:19  
标签:证书 public https Maui new blazor true Android

Maui中的Android使用https时信任所有证书

前言

最近使用Maui+blazor写了一个Android app,需要调用webapi接口,同时需要用websock与服务器通信,在使用http和https中遇到一些问题

http

Android默认禁止http,想要使用http需要在Platforms\Android目录下找到AndroidManifest.xml文件,然后在application节点中添加android:UsesCleartextTraffic="true" 如图
输入图片说明

或者在MainApplication类中的Application特性中添加UsesCleartextTraffic = true

    [Application(UsesCleartextTraffic =true)]
    public class MainApplication : MauiApplication
    {
        public MainApplication(IntPtr handle, JniHandleOwnership ownership)
            : base(handle, ownership)
        {
        }

        protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();

    }

https

使用https时因为需要证书,目前没有证书,就在iis中创建了个自签名证书(webapi发布到了iis),这时想要调用api接口需要信任证书,官网上给的解决方案如下

    public class HttpsClientHandlerService
    {
        public HttpMessageHandler GetPlatformMessageHandler()
        {
#if ANDROID
            var handler = new Xamarin.Android.Net.AndroidMessageHandler
            {
                ServerCertificateCustomValidationCallback = (message, cert, chain, errors) =>
            {
                if (cert != null && cert.Issuer.Equals("CN=LAPTOP-CL5H1EIT"))
                    return true;
                return errors == System.Net.Security.SslPolicyErrors.None;
            }
            };
            return handler;
#elif IOS
        var handler = new NSUrlSessionHandler
        {
            TrustOverrideForUrl = IsHttpsLocalhost
        };
        return handler;
#else
            throw new PlatformNotSupportedException("Only Android and iOS supported.");
#endif
        }

#if IOS
    public bool IsHttpsLocalhost(NSUrlSessionHandler sender, string url, Security.SecTrust trust)
    {
        return url.StartsWith("https://localhost");
    }
#endif
    }

     builder.Services.AddScoped(sp => new HttpClient(new HttpsClientHandlerService().GetPlatformMessageHandler()) { BaseAddress = new Uri("https://192.168.6.13") });

先在一个类中创建一个反回httpmessagehandle
的方法,在实例化httpclient时传入,这时在请求接口时cert参数会获取证书的信息,这里做了一下判断,也可以直接返回true

websocket

在websocket使用wss请求连接如下

ClientWebSocket webSocket = new ClientWebSocket();

        webSocket.Options.RemoteCertificateValidationCallback = (message,cain,cailn,error) => true;
        await webSocket.ConnectAsync(new Uri("wss://192.168.6.13/pumpsys/Websocket/GetWebsocketConnection"), disposalTokenSource.Token);
        await SendMessageAsync();
        await ReceiveLoop();

和使用httpclient调用接口差不多,在option中有个remotecertificatevalidationcallback的委托,
他在请求连接时也会返回证书信息在cain参数中

标签:证书,public,https,Maui,new,blazor,true,Android
From: https://www.cnblogs.com/bigmini/p/18237386

相关文章

  • 记录第一次http转https
    之前小程序用的后端是咸虾米老师的,昨天写小程序就想着自己又不是不会写?用自己的吧,然后发现微信小程序要域名是https协议的。看来又得学新东西了Q-Q查了下大概要这么几个步骤1.购买ssl证书2.通过naginx配置ssl证书3.将以前的http重定向到https那就从第一步开始,应该是这个......
  • nginx泛域名http(80)强制跳转https(443)
    nginx泛域名http(80)强制跳转https(443)随着chrome浏览器在地址栏开始标注网站『不安全』的提示开始,各大小网站都开始从http转为https了,并且都更注重网站的安全了。然页我们之前的很多站点都是基于http开发的,如果全部改造成https,必然是很大的工作量,幸好有第三方的工具可以为我们......
  • node基于自签名证书搭建https服务
    原文链接:https://www.cnblogs.com/yalong/p/18232314描述基于node.js搭建一个https静态资源服务,由于只是本地用,所以使用自签名的ssl证书就行了我用的mac系统,系统自带有openssl的,其他系统如果没有请先安装使用Openssl生成CA证书生成root密钥:opensslgenrsa-outroot......
  • 微软官方开源免费的Blazor UI组件库 - Fluent UI Blazor
    前言今天大姚给大家分享一个由微软官方开源(MITLicense)、免费的BlazorUI组件库:FluentUIBlazor。全面的ASP.NETCoreBlazor简介和快速入门FluentUIBlazor介绍FluentUIBlazor是一个基于Blazor的组件库,提供了一系列的UI组件以及FluentUI的设计系统。该库可以帮助开......
  • [Proxy] 使用 Charles 对 Android 应用进行 HTTPS 数据抓包
    抓包工具Charleshttps://www.charlesproxy.com/操作步骤1.在电脑上安装Charles客户端并进行配置1.1设置ProxySetting1.2设置 SSLProxingSetting1.3重启Charles客户端2.在手机上安装Charles证书2.1将手机与电脑连接到同一WIFI网络2.2设置手机WIF......
  • 34、nginx-公网CA加密部署-网站https部署-阿里云
    1、购买阿里云服务器2、安装nginx、打开访问3、购买域名、域名解析、解析后可用域名去访问网站 4、购买ssl证书  5、这里我申请免费证书    验证通过后、提交审核即可这一步表示证书已买好了、点击下载 下载完将证书包拉到服务器上的/etc/nginx ......
  • 33、nginx-CA和https(http+ssl(安全套接字))私有CA--网站加密(443 ssl https)-加密密钥key
    算法:将原有的值通过一些算法来进行加密对称算法(加密和解密的过程用的钥匙是相同的):AES\DES\3DES非对称算法(加密和解密的过程中使用的钥匙是不一样的):DH\RSAhash算法:MD5=========================================SSL安全套接字===================================......
  • MAUI:Compatibility.Layout<T> 不显示任何内容
    我在Xamarin->MAUI转换中苦苦挣扎,并被Compatibility.Layout<T>中的问题所困扰,它无法显示任何内容。我希望看到一个标签(相同的代码可在Xamarin表单中使用)。下面是Maui和Xamarin的代码和截图。我遗漏了什么?以下是我的MAUI代码(无法正常......
  • 分享下最近基于Avalonia UI和MAUI写跨平台时间管理工具的体验
    起因几个月前,我在寻找一款时间管理软件,类似番茄时钟的工具,但是希望可以自定义时间。需要自定义的场景做雅思阅读,3篇文件需要严格控制时间分配,需要一个灵活的计时器定期提醒,每30分钟需要喝水或者上个厕所或者摸一下鱼...总结起来就是:专注一段时间,比如30分钟,然后休息10分钟,......
  • 微软官方开源免费的Blazor UI组件库 - Fluent UI Blazor
    前言今天大姚给大家分享一个由微软官方开源(MITLicense)、免费的BlazorUI组件库:FluentUIBlazor。全面的ASP.NETCoreBlazor简介和快速入门FluentUIBlazor介绍FluentUIBlazor是一个基于Blazor的组件库,提供了一系列的UI组件以及FluentUI的设计系统。该库可以帮助开发......