セキュアアクセス上のkintoneへ python での REST API 利用

セキュアアクセスのkintoneへAPIリクエストを実施するには、

  • APIトークンと
  • クライアント証明書と
  • (クライアント証明書の)パスワード

の3点が必要と認識しております。

node.jsで実装した時は
https://developer.cybozu.io/hc/ja/articles/900000767263-kintone-JavaScript-Client-kintone-rest-api-client-#usage-nodejs 
「クライアント証明書を設定する」
を参考に実装できたのですが、

これを python で実現するやり方がわかりません。
セキュアアクセスでは無い場合のAPIの処理は以下のようになると思っております。これにどう client_certfile、client_password を紐づけ?ればいいのでしょう?
(そもそもrequestsだけでは無理。ほかのライブラリも必要等あればご教示ください)

url = '[https://subdomain.s.cybozu.com/k/v1/record.json](https://subdomain.s.cybozu.com/k/v1/record.json)'
client_certfile = './hoge.pfx'
client_password = 'XXXXX'
payload = {'app': 'YYYY', 'id': '1'}
headers = {
  'X-Cybozu-API-Token': 'MY_TOKEN',
  'Content-Type' : 'application/json'
}

r = requests.get(url, headers=headers, data=payload)
print ( r.json() )

なにとぞよろしくお願いいたします。

 

requests ではpfx が解釈できません。
pfx は証明書と秘密鍵が同梱されていますので、まずopenssl コマンドで秘密鍵と証明書をエクスポートしてください。

<参考> PKCS#12(pfx)形式から、秘密鍵、公開鍵形式への変換方法
https://knowledge.digicert.com/ja/jp/solution/SO28762.html 

エクスポートする際にクライアント証明書のパスワードが必要です。

openssl pkcs12 -in <PKCS#12ファイル名> -nocerts -nodes -out <秘密鍵ファイル名>

openssl pkcs12 -in <PKCS#12ファイル名> -clcerts -nokeys -out <証明書ファイル名>

そのあと、requests のcert オプションに証明書と秘密鍵を指定すればGET できます。
<参考> SSL Cert Verification
https://requests-docs-ja.readthedocs.io/en/latest/user/advanced/ 

r = requests.get(url, headers=headers, cert=('{証明書ファイル名}','{秘密鍵ファイル名}'),data=payload)