Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mono TLS1.2问题-btls证书同步;“未找到命令”; 总结:_C#_.net_Docker_Mono - Fatal编程技术网

C# Mono TLS1.2问题-btls证书同步;“未找到命令”; 总结:

C# Mono TLS1.2问题-btls证书同步;“未找到命令”; 总结:,c#,.net,docker,mono,C#,.net,Docker,Mono,我的公司使用TargetProcess(TP)跟踪开放项目的进度,我们创建了一个相对较小的代码,将更新导入到TargetProcess。 目前在提交构建时,我们启动了一个debian docker映像,预装了Mono,它运行我们的小型.NET(C#)程序,将我们的更新连接到TP 复制: 看起来TP最近更新了他们的API,只接受TLS1.2连接,所以我们必须创建一个新的docker映像,上面有Mono4.8,Alpha通道(根据这个)。 在docker映像上安装新的Mono后,程序仍然无法开箱即用

我的公司使用TargetProcess(TP)跟踪开放项目的进度,我们创建了一个相对较小的代码,将更新导入到TargetProcess。 目前在提交构建时,我们启动了一个debian docker映像,预装了Mono,它运行我们的小型.NET(C#)程序,将我们的更新连接到TP

复制: 看起来TP最近更新了他们的API,只接受TLS1.2连接,所以我们必须创建一个新的docker映像,上面有Mono4.8,Alpha通道(根据这个)。 在docker映像上安装新的Mono后,程序仍然无法开箱即用,因此我们采取了一些步骤:(按照Mono的安全常见问题解答的提示)

测试: 对于如何测试证书的格式是否正确,似乎有一个非常有用的方法。在docker映像中运行这个测试命令之后,我仍然看到下面的失败消息

MONO_TLS_PROVIDER=btls csharp -e 'Console.WriteLine (new System.Net.WebClient ().DownloadString ("https://www.howsmyssl.com/").IndexOf ("1.2"))'

// error message
System.Net.WebException: Error: TrustFailure (Ssl error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED) ---> Mono.Btls.MonoBtlsException: Ssl error:1000007d:SSLroutines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED

让mono实例接受TLS1.2连接的任何帮助或建议都将非常棒。

btls cert sync
是用于
btls cert sync.exe

查找通常安装在
4.8.0/lib/mono/4.8
中的
btls cert sync.exe
,并使用
mono
运行它:

mono btls-cert-sync.exe

从mono 4.8 beta 3开始,btls证书同步似乎已经合并到证书同步中

请确保您拥有最新版本的cert sync,因为即使您已更新mono,也可能会安装旧版本的cert sync,因为ca certificates mono软件包尚未更新(Linux)

如果查看证书同步输出,您将看到

Mono Certificate Store Sync - version 4.8.0.0
...
Importing into legacy system store:
...
Importing into BTLS system store:
...

在docker映像上查找时,我们找不到任何包含要运行的“BTL”的文件-这让我相信它可能未安装和/或未转移到docker映像。apt缓存是否尝试查找我们是否没有安装所需的BTL包-只能找到包“libmono-btls-interface4.0-cil”这似乎不允许访问“btls cert sync”exe。您找到问题的答案了吗?我们最终创建了一个围绕TLS问题的路由,通过创建一个常设服务器来路由来自mono的呼叫!
Mono Certificate Store Sync - version 4.8.0.0
...
Importing into legacy system store:
...
Importing into BTLS system store:
...