4

我一直在尝试按照这些步骤并使用此源代码登录到必发帐户。这工作正常,我返回了一个会话密钥,但是如果我尝试重复这些步骤以在另一个项目中获取会话密钥,我会收到“CERT_AUTH_REQUIRED”错误,这意味着我发送的客户端证书有问题要求。

更奇怪的是,如果我创建另一个引用正在工作的 Betfair 项目的项目并让这个新项目简单地运行 Betfair 项目中的 Program.Main 方法,我会再次收到“CERT_AUTH_REQUIRED”消息吗?

当 Betfair 应用程序是它工作的解决方案的 Launch 项目时,但如果我将启动 betfair 控制台应用程序的第二个项目设置为启动项目,它不会返回成功响应(尽管代码运行良好并通过所有相同的步骤,只是网络响应失败)。

有谁知道为什么会这样?

4

2 回答 2

2

我设法使该代码适用于非交互式登录。我确实做了这个改变。这听起来有点熟悉,因为我记得有那个错误。

    private WebRequestHandler getWebRequestHandlerWithCert(string certFilename)
    {
        var cert = new X509Certificate2(certFilename, "", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
        var clientHandler = new WebRequestHandler();
        clientHandler.ClientCertificates.Add(cert);
        return clientHandler;
    }
于 2017-04-25T08:23:56.777 回答
0

我刚刚发现的另一件事可能导致相同的错误,如果您在以下步骤中输入导出密码。自从您创建密钥以来,这可能已经改变,因为它将其标记为可导出,因此我不需要添加X509KeyStorageFlags.Exportable代码:

openssl pkcs12 -export -in client-2048.crt -inkey client-2048.key -out client-2048.p12

我假设导出密码是示例应用程序提示的内容,但事实并非如此,因此导出密码应该留空。

于 2018-08-16T07:57:48.383 回答