ユーザー認証にTLSクライアント証明書を使用するWebサービスがあります。ここで、サービスが証明書の認証を正しく実装する(「設定されています」)場合、フルスタックテストを作成したいと思います。キー/証明書が一致しない場合のTLS証明書のテスト
特に、提示されたクライアント証明書と一致しないキーで要求を暗号化できるかどうかは疑問です。
理想的には、テストはPythonで書かれていますが、その他の共通言語も同様です。
だから私の最初の試みは、Pythonのrequests
パッケージを使用していた:
requests.post(url, data=payload, cert=(cert_path, key_path), verify=False)
鍵が証明書と一致した場合、これは動作しますが、不一致の場合には、私はちょうど、クライアントである
requests.exceptions.SSLError: [X509: KEY_VALUES_MISMATCH] key values mismatch (_ssl.c:2718)
を取得リクエストがサーバーにヒットしないようにします(したがって、何もテストしません)。
私の質問です:それは実際には悪い証明書を提示することは可能ですか、それはプロトコル設計によって不可能ですか?どのようにそのようなテストを実装するためのヒント?
証明書の所有者であることを証明するために、その秘密鍵で作成されたデジタル署名を提示する必要があるため、正しい秘密鍵も持っていない限り、証明書を提示することはできません。私はそれを許可することを認識しているSSL APIはありません。 – EJP