<p>最可能的错误是<code>requests</code>和服务器无法协商要使用的密码。</p>
<p>检查卷发的用途</p>
<pre><code>curl --verbose https://internal.site.no/
</code></pre>
<p>它会给你很多输出,但你要找的是像<code>SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256</code>这样的东西。</p>
<p>查看请求的<a href="https://github.com/kennethreitz/requests/compare/v2.11.1...v2.12.0" rel="noreferrer">2.11.1 to 2.12.0</a>差异,可以看到urllib3的新版本(到版本1.19)。也许是<a href="https://github.com/shazow/urllib3/commit/02c5d965d0f8c64b67c4067c9d650754ef644781#diff-8b6e87f6b5a8da0b15b37afaded9ac60" rel="noreferrer">removal of 3des</a>咬了你?</p>
<p>如果您将<code>curl --verbose ...</code>输出使用的密码与<a href="https://testssl.sh/openssl-rfc.mappping.html" rel="noreferrer">this</a>使用的密码名称映射的完整列表进行比较。您可以尝试将名称的<code>openssl</code>名称添加到<code>requests</code>接受的内容中,例如(您可以在应用程序/脚本的开头执行此操作):</p>
<pre><code>import requests
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += ':ADH-AES128-SHA256'
</code></pre>
<p>如果curl显示它正在使用<code>TLS_DH_anon_WITH_AES_128_CBC_SHA256</code>(作为一个例子)。</p>
<p>另一个方便的技巧是使用nmap脚本<a href="https://nmap.org/nsedoc/scripts/ssl-enum-ciphers.html" rel="noreferrer">ssl-enum-ciphers</a>,如下所示:</p>
<pre><code>nmap --script ssl-enum-ciphers -p 443 internal.site.no
</code></pre>
<p>要获取它找到的受支持密码的列表(注意,脚本可能有噪音)。。。</p>