单声道TLS1.2问题 - 未找到btls-cert-sync“命令”

时间:2016-12-27 16:49:20

标签: c# .net docker mono

要点:

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

摄制:

TP似乎最近更新了他们的API只接受TLS1.2连接,因此我们必须在其上创建一个新的Docker镜像,其中包含Alpha通道Mono 4.8(按此article)。 这个新的Mono安装在docker镜像上,程序仍然没有开箱即用,所以我们采取了几个步骤:(按照Mono安全常见问题解答的提示)

// Made sure that the most current version ca-certificates-mono is installed
// and it seems to have been installed upon installation of mono 4.8
apt-get install ca-certificates-mono

// This should be an unnecessary step from what I read, but ran anyway 
cert-sync /etc/ssl/certs/ca-certificates.crt

// lastly btls-cert-sync command, but can't seem to get it to not return
// "command not found" no matter wher I try running it
btls-cert-sync

测试:

对于如何测试您的证书是否格式正确,似乎有一个非常有帮助的thread。在我的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

任何帮助或建议让我们的单声道实例接受TLS1.2连接都会很棒。

2 个答案:

答案 0 :(得分:1)

btls-cert-syncbtls-cert-sync.exe

的shell脚本

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

mono btls-cert-sync.exe

答案 1 :(得分:1)

从单声道4.8 beta 3开始,btls-cert-sync似乎已合并为cert-sync。

请确保您拥有最新版本的cert-sync,因为即使您更新了单声道版本,仍然可以安装旧版本的cert-sync,因为ca-certificates-mono软件包还没有已更新(Linux)。

如果你看一下cert-sync输出,你会看到

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