問題タブ [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 - pyOpenSSLverify_cbのssl証明書内のcnを生成されたソケットに関連付ける方法
私はpyOpenSSLに少し慣れていません。生成されたソケットをSSL証明書に関連付ける方法を理解しようとしています。verify_cbが呼び出され、証明書とconnにアクセスできるようになりますが、これが発生した場合、これらを関連付けるにはどうすればよいですか。
cli、addr = self.server.accept()
python - pyOpenSSLでRSA SHA1署名を確認するにはどうすればよいですか
M2Crypto をインストールしてみましたが、問題に直面しました。インストールが難しいライブラリの使用を顧客に強制したくありません。そこで、pyOpenSSL を試してみようと思いました。pem 証明書から公開鍵を取得できますが、署名を検証する方法が見つかりません。
python - HTTPS 接続 Python
そのターゲットが https Web サービスを公開していることを確認しようとしています。HTTP 経由で接続するコードはありますが、HTTPS 経由で接続する方法がわかりません。SSL を使用していることを読みましたが、証明書エラーをサポートしていないことも読みました。私が得たコードは、python docs からのものです:
HTTPS に接続する方法を知っている人はいますか?
すでに HTTPSConenction を試しましたが、httplib に属性 HTTPSConnection がないことを示すエラー コードが返されます。また、socket.ssl も利用できません。
Python 2.6.4 をインストールしましたが、SSL サポートがコンパイルされていないと思います。このサポートを再インストールせずに新しい python に統合する方法はありますか。
OpenSSL と pyOpenSsl をインストールし、回答の 1 つから以下のコードを試しました。
エラーが発生しました:
これを機能させる方法を知っている人はいますか?
私が使用していた Python のバージョンは SSL をサポートしていませんでした。現在、このソリューションをhttp://www.webtop.com.au/compiling-python-with-ssl-supportで見つけました。
このソリューションの後、コードが機能するようになりました。これは非常に優れています。ssl と HTTPSConnection をインポートすると、エラーが発生しないことがわかっています。
助けてくれてありがとう。
python - pyOpenSSL と WantReadError
Python 2.5 で SSL に移行しようとしているソケット サーバーがありますが、pyOpenSSL で問題が発生しました。それを使用するための適切なチュートリアルが見つからないため、主に推測に基づいて操作しています.
サーバーがソケットをセットアップする方法は次のとおりです。
クライアントを受け入れる方法は次のとおりです。
そして、接続されたソケットから送受信する方法は次のとおりです。
圧縮されていますが、一般的なアイデアは得られます。問題は、送信/受信ループが開始されると、何かが送信または受信される前にすぐに終了することです (とにかく見ることができます):
「WantReadError」に関するマニュアルの説明は非常に曖昧で、ほぼどこからでも発生する可能性があると述べています。私は何を間違っていますか?
python - ツイスト DTLS 接続
m2crypto (または pyopenssl) で twisted を使用して dtls プロトコルを実装するには?
python - SSL ソケット接続を使用する Python の配布 (キー、証明書) には何が必要ですか?
サーバー間でデータを交換できる汎用サーバー クライアント アプリケーションを作成しようとしています。私はかなりの数の OpenSSL ドキュメントを読み、テスト目的で自分の CA を正常にセットアップし、証明書 (および秘密鍵) を作成しました。
Python 2.3 に固執しているため、標準の「ssl」ライブラリを使用できません。代わりに、私は PyOpenSSL に固執しています。これは悪くないように見えますが、それに関するドキュメントはあまりありません。
私の質問は、それを機能させることではありません。証明書と、それらがどこに行く必要があるかについて、私はもっと混乱しています。
動作する私の2つのプログラムは次のとおりです。
サーバ:
クライアント:
ftp://ftp.pbone.net/mirror/ftp.pld-linux.org/dists/2.0/PLD/i586/PLD/RPMS/python-pyOpenSSL-examples-0.6-2.i586.rpmからこの情報を見つけましたこれには、いくつかのサンプル スクリプトが含まれています。
お気づきかもしれませんが、「# ????????」の間のセクションを完全には理解していません。クライアントとサーバーの両方で証明書と秘密鍵が必要な理由がわかりません。それぞれがどこに行くべきかわかりませんが、鍵の一部 (おそらく公開部分) だけを配布すればよいのではないでしょうか? 各サーバーで両方が必要な場合は、非対称キーを持つという目的が損なわれますよね?
どちらかのボックスで pkey または cert を交互に削除しようとしましたが、どちらを削除しても次のエラーが発生します。
OpenSSL.SSL.Error: [('SSL ルーチン'、'SSL3_READ_BYTES'、'sslv3 アラート ハンドシェイクの失敗')、('SSL ルーチン'、'SSL3_WRITE_BYTES'、'ssl ハンドシェイクの失敗')]
これがSSLの予想される動作であるかどうかを誰かが説明できますか. 秘密鍵と公開証明書をすべてのクライアントに本当に配布する必要がありますか? 私は大きなセキュリティ上の問題を回避しようとしていますが、秘密鍵の漏洩は大きな問題になる傾向があります...
助けてくれてありがとう!
================================================== ================
問題の解決を手伝ってくれた caf に感謝します。彼の推奨に基づいて、spaceman と dmgr という 2 つの新しい証明書ペアを作成しました。次に、両方の「spaceman」部分 (キー、証明書) をクライアント プログラムに配置し、「dmgr」キーについても同じようにします。
基本的には、Clientの次の 2 行のみが変更されましたが、側面で openssl を使用する作業がたくさんありました。
修正版:
python - pyOpenSSL クライアントに SSL セッションの再開を使用させる
Tomcatアプリケーションサーバーに複数の接続を連続して行う(httpリクエストを送信する)ときに、pyOpenSSLクライアントがTLS / SSLセッション再開を使用するようにしようとしましたが、成功しませんでした。他のいくつかのクライアントが同様の接続を行っており、それらはすべてセッションの再開を行うことができるため、サーバー側ではすべてが正常であると確信しています。
最初の接続では、ssl コンテキストを作成します。次に、後続の接続にコンテキストを再利用します
python - Amazon Linux (EC2) に pyOpenSSL をインストールする
ec2 で amazon Linux の最初のデフォルト AMI を使用していますが、pyOpenSSL をインストールできないようです。私が試した:sudo wget http://launchpad.net/pyopenssl/main/0.11/+download/pyOpenSSL-0.11.tar.gz && easy_install pyOpenSSL-0.11.tar.gz。
また試してみました: 結果は: sudo python setup.py build
ヘッダーを取得するには、python devel がインストールされていることを確認する必要があると考え、yum がインストールしたものを確認しました。yum リスト | grep python の結果:
python-devel と openssl-devel をインストールし、モジュールをビルドしてインストールすることができました。しかし、インポートできませんでした。
openssl - TLSハンドシェイクがTwistedでファイナライズされたことを確認する方法
これは、この質問のフォローアップです。TwistedTLSConnectionを介してデータが送信されなかった場合のSSLハンドシェイクの失敗
クライアントが接続されるとすぐに接続を閉じる単純なSSLサーバーを実装しました。
私はopensslでテストしていますが、このハンドシェイクの失敗が発生しました。
問題はTLS.Connection.loseConnection
、進行中のハンドシェイクが完了するのを待たずに、クライアントを切断することです。
に添付されたコールバックOpenSSL.SSL.Connection.do_handshake
は素晴らしかったでしょう...しかし残念ながら、これができるかどうか...またはそれを行う方法がわかりません。
TLSハンドシェイクが行われたことをテストする方法についてのヒントは大歓迎です。どうもありがとう!
これがコードです
今のところ、私はこれを本当に汚く解決し、100%有効ではありません。
openssl - このコードで TLS over TLS を実行しようとすると、ハンドシェイクが失敗するのはなぜですか?
twisted.protocols.tls
メモリ BIO を使用した OpenSSL へのインターフェイスである を使用して、TLS over TLS を実行できるプロトコルを実装しようとしました。
私はこれをプロトコル ラッパーとして実装しました。これは通常の TCP トランスポートのように見えますが、TLS のレイヤーをそれぞれ追加および削除するためのstartTLS
およびメソッドがあります。stopTLS
これは、TLS の最初のレイヤーでは問題なく機能します。「ネイティブ」の Twisted TLS トランスポートで実行しても問題なく動作します。ただし、このラッパーが提供する方法を使用して 2 番目の TLS レイヤーを追加しようとすると、startTLS
すぐにハンドシェイク エラーが発生し、接続が不明な使用不能状態になります。
ラッパーとそれを機能させる 2 つのヘルパーは次のようになります。
これを実行するための簡単なクライアント プログラムとサーバー プログラムがあり、ランチパッド ( bzr branch lp:~exarkun/+junk/onion
) から入手できます。これを使用してstartTLS
上記のメソッドを 2 回呼び出し、その間に を呼び出すとstopTLS
、次の OpenSSL エラーが発生します。
なぜ物事がうまくいかないのですか?