C# Mono TLS1.2问题-btls证书同步;“未找到命令”; 总结:
我的公司使用TargetProcess(TP)跟踪开放项目的进度,我们创建了一个相对较小的代码,将更新导入到TargetProcess。 目前在提交构建时,我们启动了一个debian docker映像,预装了Mono,它运行我们的小型.NET(C#)程序,将我们的更新连接到TP 复制: 看起来TP最近更新了他们的API,只接受TLS1.2连接,所以我们必须创建一个新的docker映像,上面有Mono4.8,Alpha通道(根据这个)。 在docker映像上安装新的Mono后,程序仍然无法开箱即用,因此我们采取了一些步骤:(按照Mono的安全常见问题解答的提示) 测试: 对于如何测试证书的格式是否正确,似乎有一个非常有用的方法。在docker映像中运行这个测试命令之后,我仍然看到下面的失败消息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后,程序仍然无法开箱即用
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:
...