簡體   English   中英

如何將 SSL 上下文傳遞到使用自動生成的 OpenAPI Python 客戶端庫的 Python 客戶端

[英]How do I pass SSL Context into a Python Client that Uses the Autogenerated OpenAPI Python Client Library

我有一個 Python3 OpenAPI 客戶端應用程序,它給我以下錯誤:“無法獲取本地頒發者證書”。

此應用程序使用OpenAPI 生成器提供的自動生成的 python 客戶端庫,它連接到我的 HTTPS Node Express 服務(存根也由 OpenAPI 生成器生成)。

我正在使用 OpenAPI Generator 的 5.4.0 版本

我使用以下代碼片段復制了錯誤:

from urllib import request
resp = request.urlopen("https://sdbie-sargrad.chgme.com:8081/api-docs") 
html = resp.read()

然后我通過對這個簡單的代碼片段進行以下更新來修復錯誤:

from urllib import request
import ssl
context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
context.verify_mode = ssl.CERT_REQUIRED 
context.load_verify_locations("/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem")
resp = request.urlopen("https://sdbie-sargrad.chgme.com:8081/api-docs", context=context) 
html = resp.read()

我的 OpenAPI 代碼如下所示:

from api.vlc_api_1_5_0.openapi_client.model.video import Video
from api.vlc_api_1_5_0.openapi_client.exceptions import ApiException
from api.vlc_api_1_5_0.openapi_client.exceptions import ApiTypeError
from api.vlc_api_1_5_0.openapi_client.configuration import Configuration
from api.vlc_api_1_5_0.openapi_client.api import video_api
from api.vlc_api_1_5_0.openapi_client.api_client import ApiClient

self.configuration = Configuration(host)
with ApiClient(self.configuration) as api_client:
    vid_api = video_api.VideoApi(api_client)
    try:
        inv = vid_api.get_video_inventory()
    except ApiException as e:
        self.logger.error("Exception when calling VideoApi->get_video_inventory: %s\n" % e)

順便說一句,“ petstore api ”看起來很像你看到我在上面使用的 api 的結構。

如何將適當的 SSL 上下文(如上面的固定片段中所示)傳遞到由 openapi 生成器自動生成的“VideoApi”的構造函數中?

因為看起來服務器可能正在使用自簽名 SSL 證書,所以設置:

configuration.verify_ssl = False

應該做的伎倆

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM