問題タブ [pyopenssl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 証明書またはその他の接続情報からpyOpenSSLを使用して公開鍵を抽出します
私は現在、公開鍵に基づいて現在のクライアントを認証するPythonサーバースクリプトを作成しようとしています。ツイストを使用しているので、ツイストドキュメンテーションの例から始めました。
サンプルコードを使用してキーを生成し、接続して通信することはできますが、クライアントの公開キーを使用可能な形式で取得する方法はまだ見つかりません。このスタック交換の質問では、誰かがオブジェクトから公開鍵を抽出しOpenSSL.crypto.PKey
ますが、それを読み取り可能な形式に変換することはできません。メソッド内またはプロトコルの任意のメソッドを介しPKey
てx509証明書のオブジェクトにアクセスできるので、これは良い方法です。(受け入れられない)答えは試してみることを示唆しています。残念ながら、これは実際には期待される結果をもたらしません。答えのとは簡単なテキスト置換関数で修正できますが、base64文字列は公開鍵と一致しないようです。公開鍵を抽出しましたverifyCallback
self.transport.getPeerCertificate()
crypto.dump_privatekey(PKey)
BEGIN PRIVATE KEY
BEGIN PRIVATE KEY
openssl rsa -in client.key -pubout > client.pub
ここで述べたように。関数の結果と一致しませんdump_privatekey
。
ランチパッドのOpenSSLに対する未解決のバグはまだありますが、まだ修正されていません。これは19か月前に報告されたもので、最近(2012年10月)のアクティビティがいくつかあります。リポジトリが迅速に修正される見込みはありません。
client.pub
上記のファイルに匹敵する形式で公開鍵を取得する方法について、他に何かアイデアはありますか?おそらく、この情報を保持するツイストまたはOpenSSL接続固有のオブジェクトがあります。後でアクセスできるように、公開鍵をプロトコルオブジェクトに保存する必要があることに注意してください。
なぜ回答が受け入れられないのですか?
JFセバスティアンによるM2Crypto
申し訳ありませんが、証明書を接続に関連付けることができない可能性については考えていませんでした。プロトコルインスタンス内に公開鍵を保存する必要があるという要件を追加しました。したがって、 JFセバスティアンによって提案されpeerX509.as_pem()
た関数内での使用はpostConnectionCheck
機能しません。さらに、少なくともpython-m2cryptoのバージョン0.21.1-2ubuntu3ではpeerX509.get_rsa().as_pem()
、正しい公開鍵を取得するために呼び出す必要があります。peerX509.as_pem(None)
(パスフレーズが必要なため)を使用peerX509.as_pem()
すると、PyOpenSSLとまったく同じ出力が得られcrypto.dump_privatekey(PKey)
ます。たぶんバグがあります。
Echo
これに加えて、答えは私に次のプロトコルクラスを使用することによって別の回避策を書くための可能な方法を示しました:
ご覧のとおり、これは防止したいいくつかの内部クラスを使用しています。M2Crypto.SSL.TwistedProtocolWrappergetCert
のクラスにメソッドを追加する小さなパッチを提出するのをためらっています。TLSProtocolWrapper
それがアップストリームで受け入れられたとしても、それは私のスクリプトとm2cryptoの最も最先端のバージョン以外のバージョンとの互換性を壊してしまいます。あなたならどうしますか?
私による外部OpenSSL呼び出し
まあ、それは外部システムコマンドに基づく醜い回避策であり、非公開の属性にアクセスするよりもさらに悪いように思えます。
python - OpenSSL.Connectionで同等のアンラップとは何ですか?
OpenSSLを使用しています。SSL接続を閉じたいのですが、基盤となるプレーンソケット接続を維持したいと考えています。SSLライブラリにはそのためのunwrap
機能があるようです。OpenSSL.Connection
クラスを使用してそれを達成するための同等の方法は何でしょうか?
また、サーバーからSSL接続をダウングレードすることも可能ですか?
pyopenssl - Mac OS XにpyOpenSSLをインストールするにはどうすればよいですか?
Titanium 3.0を使用していて、pyOpenSSLを更新しようとしています。PythonのWebサイトを確認しましたが、Windows用のダウンロード可能なリンクのみが表示されます。Tianiumフォーラムでは、「MacPortsまたはHomebrewを使用してPythonをインストールした場合は、同じユーティリティを使用してPyOpenSSLとPyCryptoをインストールしてください」と述べています。homebrewを使用してみて、「brew install pyopenssl」を実行すると、「pyopensslに使用できる式がありません」というエラーメッセージが表示されました。何かアドバイス?
x509certificate - PyOpenSSL 読み取り証明書/pkey ファイル
それが私が証明書を作成する方法です
ここでは、世代がどのように見えるかを示します。
さて、PyOpenSSLを使用してプレーンファイルからこれらの値を証明書から抽出するにはどうすればよいですか?
だからここに私が思いついたものがあります
python - PythonOpenSSLを使用して秘密鍵から公開鍵を取得する
さて、私は次のようにpyOpenSSLを使用して秘密鍵を生成します。
公開鍵文字列を取得するにはどうすればよいですか?このライブラリのどのメソッドがそれを行うのかまだわかりません。ありがとう
python-2.7 - pyopenssl を使用して自己署名証明書を作成する
pyopenssl を使用して AC 自己署名 X509v3 CA 証明書を生成しようとしています。サブジェクト鍵識別子 (SKID) を含む keyid を持つ拡張権限鍵識別子 (AKID) を追加したいと思います。
しかし、次のコード ブロックは SKID を AKID にコピーせず、例外をスローします。
コードは次のとおりです。
スローされる例外は次のとおりです
コードの下の行の keyid パラメータの行から「 always 」を削除すると、
OpenSSL.crypto.X509Extension("authorityKeyIdentifier", False, "keyid",issuer=ca)
AKID keyid フィールドが空になり、以下に示すように SKID が含まれていません
python - Google Drive API ImportError
Google Drive API(Oauth2)のドメインレベルで認証を行おうとしています。そのために、以下のように Google ドライブのドキュメント リンクを参照します。
https://developers.google.com/drive/delegation
すでにopensslをインストールしていますが、エラーも発生します
ImportError: SignedJwtAssertionCredentials をインポートしようとすると、名前の SignedJwtAsseionCredentials をインポートできません。
完全なトレースバックは次のとおりです。
ERROR 2013-04-16 05:03:52,006 wsgi.py:219] トレースバック (最新の呼び出しが最後): ファイル "C:\Program Files\Google\google_appengine\google\appengine\runtime\wsgi.py"、196 行目、ハンドル ハンドラーで = _config_handle.add_wsgi_middleware(self._LoadHandler()) ファイル「C:\Program Files\Google\google_appengine\google\appengine\runtime\wsgi.py」、255 行目、_LoadHandler ハンドラーで =インポート(path[0]) ファイル「C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py」、692 行目、Decorate return func(self, *args, **kwargs) ファイル「C: \Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 1766, in load_module return self.FindAndLoadModule(submodule, fullname, search_path) File "C:\Program Files\Google\google_appengine\google\appengine \tools\dev_appserver_import_hook.py"、692 行目、Decorate return func(self, *args, **kwargs) ファイル内 "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py"、1630 行目、FindAndLoadModule の説明で) ファイル「C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py」、692 行目、in Decorate return func(self, *args, **kwargs) File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 1577, in LoadModuleRestricted description) ファイル "D:\API \GoogleDrive\myapp\main.py"、行 21、oauth2client.client インポート SignedJwtAssertionCredentials ImportError: インポートできません name SignedJwtAssertionCredentials
誰でも解決策を教えてもらえますか?
python - pyOpenSSL + HTTPServer: すべてのプロセスが完了するまでリクエストは完了しません
すぐにメッセージを返し、バックグラウンドで実行するプロセスを開始してタスクを終了することで、GET に応答できるようにしたいと考えています。これは、BaseHTTPServer.HTTPServer および BaseHTTPRequestHandler の拡張で正常に機能します。ただし、こちらの手順に従ってサーバーに SSL を追加すると、サブプロセスが完了するまで応答が送信されません。Firefox が受信したものをそのまま表示していると仮定し、Firebug で再確認すると、サブプロセスが完了するまで何も送信されないように見えます。Chrome でテストしたところ、同じ結果が得られました。以下のコード。デバッグを続行する方法がわかりません。