【问题标题】:Powershell: Connection problem due to TLSPowershell:由于 TLS 导致的连接问题
【发布时间】:2021-04-08 14:53:24
【问题描述】:

我正在使用一个名为 Qlik-Cli 的 PS 模块,

这是连接和启动任务的代码,

>     [Net.ServicePointManager]::SecurityProtocol = "Tls12"
>     $logpath = "E:\Tools\Scripts\log.txt"
>     Import-Module -Name Qlik-Cli
>     $cert =  gci cert:localmachine\my | where { $_.Thumbprint -eq '1fcad2353817a88b785b11fd543d8c3507fc8bf3'}
>     Connect-Qlik -Computername server1 -Certificate $cert -Username ad\qsadmin
>     Start-QlikTask -id df9dfa2f-32ca-4db4-bdce-15ad923fd59g

但是我遇到了问题,Invoke-RestMethod:请求被中止:无法创建 SSL/TLS 安全通道。

QlikSense 使用 1.2,因此我添加了 [Net.ServicePointManager]::SecurityProtocol = "Tls12"。 我试过其他版本。

我一直在疯狂地谷歌搜索,但找不到更多。 对于 nPrint,[Net.ServicePointManager]::SecurityProtocol = "Tls12" 使用 CLI 模块解决了它。

在这种情况下,这是否可以与证书相关联?

【问题讨论】:

    标签: powershell qliksense


    【解决方案1】:

    将您的脚本设置为使用 TLS1.2 确实需要您的服务器也支持它。以下是一些其他故障排除尝试:

    # check your client certificate (make sure it's not expired or something):
    $cert = gci cert:localmachine\my | where thumbprint -eq '1fcad2353817a88b785b11fd543d8c3507fc8bf3'
    # Use -AllowUntrustedRoot if the cert doesn't have a valid revocation list to check
    Test-Certificate $cert -AllowUntrustedRoot
    
    # Check the protocols offered by the server include TLS 1.2 - I use nmap (external tool) 
    ./nmap.exe --script ssl-enum-ciphers -p 443 server1
    
    443/tcp open  https
    | ssl-enum-ciphers: 
    |   TLSv1.2: 
    |     ciphers etc...
    
    # Try and connect manually with the command that's failing:
    Invoke-RestMethod -Uri "https://Server1/path/to/api" -Certificate $cert 
    
    

    由于它是一种休息方法,您也可以尝试在浏览器中连接,看看服务器端的证书是否可以接受。

    如果您的计算机不信任服务器证书,您可以绕过此检查(不推荐)。这至少需要 powershell v6,并且您必须编辑 qlik-cli 模块。

    Invoke-RestMethod -Uri $URI -SkipCertificateCheck -Certificate $cert 
    

    【讨论】:

    • 两个 cmets: 1. 它使用 TLS 1.2,它是 Qlik 的 QlikSense,它有一个内置的测试服务器。 2. 它只是一个使用 * 的 FQDN。 cert,不是最好的方法,但客户决定这样做。我今天使用 QlikSense 创建了一个测试服务器,只是为了查看并没有遇到这些问题。因此我怀疑证书。我会检查我明天什么时候回到办公室,并用更多信息更新这个案例。
    • 所以我看了更多,tls 是开放的,它是 dns 的有效证书。似乎只有在添加 -cert 时才会出现问题,如果您不使用它,但 -trustallcerts 它将起作用。这里的问题是我需要使用-username,这迫使我使用-cert。一切看起来都不错,所以我不知道服务器上是否有任何网络策略等。会和公司的 IT 部门聊聊这件事。
    • @Gatewarden 我不熟悉 qlik,但在模块中尝试 Invoke-RestMethod 命令并查看它是否有效可能会更容易。例如,您用于设置 Tls12 的命令仅适用于该会话 - 如果 qlik 启动另一个会话或执行远程操作,您的设置甚至可能不适用。
    【解决方案2】:

    这个问题已经解决了。该模块使用 QLikSense 创建的称为 Qlik Client 的证书。

    您必须将此与模块一起使用,而不是与 Qlik Sense 一起使用的普通证书。

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 2014-12-30
      • 1970-01-01
      相关资源
      最近更新 更多