Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从Xamarin.Forms调用自签名gRPC服务(iOS和Android)

如何从Xamarin.Forms调用自签名gRPC服务(iOS和Android)
EN

Stack Overflow用户
提问于 2021-02-11 21:12:46
回答 1查看 248关注 0票数 2

我正在尝试从一个gRPC应用程序调用一个使用ASP.NET核心在.NET 5上构建的Xamarin.Forms服务。

我在服务器端使用Grpc.AspNetCore 2.35.0,在应用程序库(.NETStandard 2.1)中使用Grpc.Net.Client 2.35.0。

当尝试从客户端调用服务时,我得到了一个异常:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Exception caught: MyException: An unknown error happened
---> Grpc.Core.RpcException: Status(StatusCode="Internal", Detail="Error starting gRPC call. HttpRequestException: The SSL connection could not be established, see inner exception. AuthenticationException: Authentication failed, see inner exception. TlsException: CertificateUnknown", DebugException="System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception.
---> Mono.Security.Interface.TlsException: CertificateUnknown
  at Mono.AppleTls.AppleTlsContext.EvaluateTrust () [0x000bf] in /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/src/Xamarin.iOS/mcs/class/System/Mono.AppleTls/AppleTlsContext.cs:306 
[SNIP]

我认为这与自签名证书有关。我使用的是使用dotnet dev-certs https工具创建的开发人员证书。

我尝试按照建议的here向创建的通道添加自定义处理程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
{
    HttpHandler = new HttpClientHandler
    {
        ServerCertificateCustomValidationCallback =
            HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
    }
});

还有另一个建议:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AppContext.SetSwitch(
    "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
GrpcChannel.ForAddress("http://localhost:5000");

但这两种方法都会导致另一个异常(可能是因为这将使用不支持HTTP2.0的旧HttpClientHandler实现):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Exception caught: MyException: An unknown error happened
---> Grpc.Core.RpcException: Status(StatusCode="Internal", Detail="Request protocol 'HTTP/1.1' is not supported.")

我还尝试通过创建自定义CA +证书并在iOS模拟器中安装根证书来绕过自签名证书。但同样的结果也发生了。我不确定这在Android上是否会有所不同,因为我无法在仿真器上安装根证书。

如何在开发服务器上使用带有Xamarin.Forms的gRPC?

EN

回答 1

Stack Overflow用户

发布于 2021-05-01 18:15:45

我已经修复了上面的异常,改变我的实现来匹配这个:https://techblog.livongo.com/implementing-grpc-in-a-xamarin-mobile-project/块。

更详细地说:

我已经添加了对Grpc.Core、Grpc.Tools、Grpc.Net.Common、Grpc.Net.Client、Grpc.Core.Api;的引用

  • 我在创建频道时添加了以下代码:

credentials)); credentials = CallCredentials.FromInterceptor((context,metadata) => Task.CompletedTask);返回新通道(“”,ChannelCredentials.Create(新SslCredentials(),var

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66162942

复制
相关文章
Akka-CQRS(13)- SSL/TLS for gRPC and HTTPS:自签名证书产生和使用
到现在,我们已经完成了POS平台和前端的网络集成。不过,还是那句话:平台系统的网络安全是至关重要的。前一篇博客里我们尝试实现了gRPC ssl/tls网络连接,但测试时用的证书如何产生始终没有搞清楚。现在akka-http开发的ws同样面临HTTPS的设置和使用问题。所以,特别抽出这篇博文讨论一下数字证书的问题。
用户1150956
2019/06/24
1.5K0
如何制作自签名证书
本文主要介绍如何基于openssl制作X.509自签名证书,以及如何使用该证书签发新证书。
coderhuo
2023/10/21
2.3K0
如何制作自签名证书
从源码透析gRPC调用原理
gRPC是如何work的,清楚的理解其调用逻辑,对于我们更好、更深入的使用gRPC很有必要。因此我们必须深度解析下gRPC的实现逻辑,在本文中,将分别从客户端和服务端来说明gRPC的实现原理。
netkiddy
2018/08/19
18.5K1
从源码透析gRPC调用原理
如何创建自签名证书
TLS/SSL是用于将正常流量包装在受保护的加密包装中的Web协议。得益于此技术,服务器可以在服务器和客户端之间安全地发送流量,而不会被外部各方拦截。证书系统还可以帮助用户验证他们正在连接的站点的身份。在本教程中,我们将向您展示如何在Ubuntu 18.04上设置用于Apache Web服务器的自签名SSL证书。
小铁匠米兰的v
2018/08/17
2.1K0
iOS使用自签名证书实现HTTPS请求
概述 在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求。 默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向Info.plist中添加NSAllowsArbitraryLoads设置绕过ATS(App Transport Security)的限制(否则须在应用审核时进行说明并很可能会被拒)。所以还未进行相应配置的公司需要尽快将升级为HTTPS的事项提上进程了。 Https HTTPS就是HTTP协议上再加一层加密处理
xiangzhihong
2018/01/26
1.9K0
iOS使用自签名证书实现HTTPS请求
概述 在16年的WWDC中,Apple已表示将从2017年1月1日起,所有新提交的App必须强制性应用HTTPS协议来进行网络请求。 默认情况下非HTTPS的网络访问是禁止的并且不能再通过简单粗暴的向Info.plist中添加NSAllowsArbitraryLoads设置绕过ATS(App Transport Security)的限制(否则须在应用审核时进行说明并很可能会被拒)。所以还未进行相应配置的公司需要尽快将升级为HTTPS的事项提上进程了。 Https HTTPS就是HTTP协议上再加一层加密
xiangzhihong
2018/02/05
4.3K0
iOS使用自签名证书实现HTTPS请求
Golang 语言 gRPC 服务怎么同时支持 gRPC 和 HTTP 客户端调用?
关于 gRPC 的文章,我们之前写过几篇,如果读者朋友还对 gRPC 不了解,我建议您可以翻阅一下公众号的历史文章。
frank.
2022/03/31
5.4K0
Golang 语言 gRPC 服务怎么同时支持 gRPC 和 HTTP 客户端调用?
java版gRPC实战之二:服务发布和调用
《java版gRPC实战》全系列链接 用proto生成代码 服务发布和调用 服务端流 客户端流 双向流 客户端动态获取服务端地址 基于eureka的注册发现 本篇概览 本文是《java版gRPC实战》系列的第二篇,前文《用proto生成代码》将父工程、依赖库版本、helloworld.proto对应的java代码都准备好了,今天的任务是实战gRPC服务的开发和调用,实现的效果如下图: 本篇的具体操作如下: 开发名为local-server的springboot应用,提供helloworld.prot
程序员欣宸
2021/12/07
6190
java版gRPC实战之二:服务发布和调用
IOS App如何调用python后端服务
本篇文章旨在通过一个小的Demo形式来了解ios app是如何调用python后端服务的,以便我们在今后的工作中可以清晰的明白ios app与后端服务之间是如何实现交互的,今天的示例是拿登录功能做一个演示。
Wu_Candy
2022/07/04
1.1K0
IOS App如何调用python后端服务
笔记 | Xamarin
所有 Android 应用都必须在 AndroidManifest.xml 中为外部存储声明两个权限之一。
yiyun
2022/04/01
24K0
笔记 | Xamarin
生成CSR和自签名证书
CSR,全称Certificate Signing Request(证书签发请求),是一种包含了公钥和与主题(通常是实体的信息,如个人或组织)相关的其他信息的数据结构。CSR通常用于向证书颁发机构(Certificate Authority,CA)申请数字证书。下面是CSR的详细介绍:
孟斯特
2023/10/25
6410
生成CSR和自签名证书
从0.5到1写个rpc框架 - 2:远程服务调用(grpc)
gRPC是Google开源的跨语言远程服务调用(RPC)框架,通信协议用的HTTP/2,数据传输默认用的protocol buffers(一种轻便高效的结构化数据存储格式,想比json更小更快,不过没有可读性)。
acupt
2019/08/26
9490
java版gRPC实战之二:服务发布和调用
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《java版gRPC实战》全系列链接 用proto生成代码 服务发布和调用 服务端流 客户端流 双向流 客户端动态获取服务端地址 基于eureka的注册发现 本篇概览 本文是《java版gRPC实战》系列的第二篇,前文《用proto生成代码》将父工程、依赖库版本、helloworld.proto对应的java代码都准备好了,今天的任务是实战gRPC服务的开发和调用
程序员欣宸
2021/10/24
1.5K0
java版gRPC实战之二:服务发布和调用
一个新实验:使用gRPC-Web从浏览器调用.NET gRPC服务
无法在浏览器中实现gRPC HTTP / 2规范,因为没有浏览器API能够对HTTP请求进行足够的细粒度控制。gRPC-Web通过与HTTP / 1.1和HTTP / 2进行兼容来解决此问题。
依乐祝
2020/02/19
1.6K0
Xamarin 技术全解析
Xamarin 是一套基于C#语言的跨平台移动应用开发工具,今年2月份微软宣布收购Xamarin,而后在4月份进行的Build大会上微软宣布将会在各个版本的Visual Studio中免费提供Xamarin,并且宣布Xamarin SDK开源。 本文主要阐述Xamarin是什么,它能做什么以及它是如何跨平台的。  1. 什么是Xamarin Xamarin 是一个跨平台的移动开发工具,由 Mono 发展而来。开发人员可以使用 C# 为iOS,Android, Mac以及Windows Phone开发原生应用
葡萄城控件
2018/01/10
6K0
Xamarin 技术全解析
如何制作和使用自签名证书
因为自签名证书签发相对于商业证书流程简单,费用低廉(除了电费几乎不花钱),更新容易。所以在开发领域、甚至一些小众场景下特别常见,比如 K8S / MySQL 集群中的 TLS 认证,一些大的集团、公司的内网服务、网站安全证书、企业路由器设备的管理后台、用于管理企业员工的“安全准入客户端”等不乏使用这个方案。
soulteary
2021/02/26
1.5K0
如何制作和使用自签名证书
如何制作和使用自签名证书
因为自签名证书签发相对于商业证书流程简单,费用低廉(除了电费几乎不花钱),更新容易。所以在开发领域、甚至一些小众场景下特别常见,比如 K8S / MySQL 集群中的 TLS 认证,一些大的集团、公司的内网服务、网站安全证书、企业路由器设备的管理后台、用于管理企业员工的“安全准入客户端”等不乏使用这个方案。
soulteary
2021/02/06
4.4K0
如何制作和使用自签名证书
理解泛型调用和函数调用签名
这里通过五个示例逐步理解泛型调用和函数调用签名 /* * @Author: Zheng Lei * @Email: baimoc@163.com * @Date: 2023-01-18 16:29:21 * @LastEditTime: 2023-01-18 17:13:43 * @FilePath: \baimo_music\demo.ts */ // 一、-------------------------------------------------------- // () 内是函数
白墨石
2023/02/02
7110
Xamarin.Forms读取并展示Android和iOS通讯录 - TerminalMACS客户端
完整思维导图:https://github.com/dotnet9/TerminalMACS/blob/master/docs/TerminalMACS.xmind
DDGarfield
2022/06/23
4K0
Xamarin.Forms读取并展示Android和iOS通讯录 - TerminalMACS客户端
点击加载更多

相似问题

调用iOS webview HTTPS (自签名证书)

21

带有自签名证书的GRPC ssl

23

用于Android和IOS的Xamarin PCL自签名证书

14

从Js调用C# in WebView - Xamarin.Forms (iOS和Android)

10

ios自签名证书

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文