我公司使用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连接都会很棒。
答案 0 :(得分:1)
btls-cert-sync
是btls-cert-sync.exe
查找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:
...