我有一个受密码保护的主机文件“ .p12”,在其中尝试使用转换后的“ .pem”文件在此主机上调用GET方法。但是,当我通过RobotFramework进行此调用时,出现以下错误:

SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:661)


我做了以下步骤:


将.p12文件转换为包含证书和密钥的.pem文件。

openssl pkcs12 -in <input_file>.p12 -out <output_file>.pem -nodes -passin pass:<password>

通过在verify选项中传递.pem文件来调用GET方法

*** Settings ***
Library    RequestsLibrary
..
..
*** Keywords ***
Call HTTPS GET method
    Create Session    my_session   https://<host>/<port>       verify=${CURDIR}${/}<output_file>.pem    debug=3

    ${response} =    Get Request    my_session    <uri>
    ..
    ..



当我使用相同的pem证书并从邮递员拨打电话时,它的工作原理非常好。我在这里想念什么?

最佳答案

我想出了解决方案。我不确定这是否合法,但对我有用。
我相信在RequestsLibrary的RequestKeywords.py中遗漏了一个参数。

左边是std库中的文件,右边是我更新的文件。

ssl - 如何使用RobotFramework RequestsLibrary在 protected 主机的URL(Https://)上调用GET请求?-LMLPHP

通过此更改,它可以完美运行。由于底层python库请求期望文件详细信息位于cert变量中,而不是在verify中。

09-11 19:18
查看更多