我有一个受密码保护的主机文件“ .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库中的文件,右边是我更新的文件。
通过此更改,它可以完美运行。由于底层python库请求期望文件详细信息位于cert变量中,而不是在verify中。