无法建立 SSL 连接,请参阅内部异常。 - DocuSign EnvelopesApi 仅调用 PROD 环境

The SSL connection could not be established, see inner exception. - DocuSign EnvelopesApi calls ONLY to PROD environment

我已经将我们的 Api 迁移到使用 Docusign OAuth 身份验证流程。在测试时,我发现当我指向 Docusign 演示环境时,代码工作得非常好。但是,当我指向 docusign Prod 环境时,出现以下错误。

无法建立 SSL 连接,请参阅内部异常。

内部异常实际上是空的。

docusign Auth 调用正常,我们按预期获得了 accountId。但是 EnvelopesApi 调用失败了。我确实有一张 Docusign 开的票,但想看看是否有人可以提供帮助。

我们的 Api 部署为 Windows 服务并且在 dotnet core 5.0 中。但是,我已经通过将 Api 部署到具有 ssl 绑定的 IIS 网站来对此进行了测试,我可以重现相同的异常。

授权流程 - OAuth JwtFlow

API BasePath as - "https : //docusign.net/restapi"(space 有意添加)

OAuth 基本路径为 - “account.docusign.com”

下面的代码获取 accountId 并设置 AccessToken。这是成功的。

    var privateKeyBytes = Encoding.UTF8.GetBytes(docuSignKey);
        try
        {
            _tokenInfo = apiClient.RequestJWTUserToken(docusignConfig.IntegratorKey, docusignConfig.UserIdGuid,
                                        docusignConfig.OAuthBasePath, privateKeyBytes, docusignConfig.TokenExpiryInHours);
            var userInfo = apiClient.GetUserInfo(_tokenInfo?.access_token);
            var account = userInfo?.Accounts
                .FirstOrDefault(la => la.IsDefault.ToLowerInvariant() == true.ToString().ToLowerInvariant())
                ?? userInfo?.Accounts.First();
            SetApiClientConfiguration(docusignConfig); 
            return account?.AccountId;
        }
        catch (Exception ex)
        {
            ESignLogger.Error($"{GetType().Name}.{nameof(AuthorizeAndGetAccountId)}. Error in getting account details. " + ex.Message);
            return null;
        }

下面的代码是 失败 的信封 Api 调用。

    var recipientResponse = await _envelopesApi.ListRecipientsAsync(accountId, envelopeId);

电子签名 REST API 对 DocuSign 生产环境的 URL 调用对于不同的客户可能会有所不同,具体取决于其帐户的配置位置。 在某些情况下可以使用默认值 URL (https://www.docusign.net/restapi)。 但是,最佳做法是为特定用户调用 User Info endpoint(按帐户,但用户可以是多个帐户的成员),对于该用户所属的每个帐户,您将取回一个 baseURI,它可能与我刚刚在上面发布的默认值不同。

如果这不是您的问题,也可能是您需要将其中一个证书下载到您的服务器。您可以在 this page.

中找到所有 DocuSign SSL 证书

检查步骤:

  1. OAuth 步骤以获得 access_token。您正在使用 JWT 授权流程。如果它 returns 来自 account.docusign.com 的访问令牌,那么您就成功了。请注意,您的客户端 ID(集成密钥)需要通过上线才能与 account.docusign.com

    一起使用
  2. 接下来使用具有正确基数 url 的访问令牌用于 eSig API。您可以使用 /oauth/userinfo API 来确定正确的基数 url。或者,如果您的应用程序仅适用于您自己的公司,您可以从电子签名设置(管理)工具的 API 和密钥页面中查找您的 DocuSign 帐户的基础 URL。