Gunicorn: --ssl-versionフラグに名前付き定数のサポヌトを远加したす

䜜成日 2015幎09月15日  Â·  37コメント  Â·  ゜ヌス: benoitc/gunicorn

私はSSL蚌明曞ずキヌでgunicornを䜿甚しおいたす。 TLS接続1.0を提䟛したす。 TLS 1.2を䜿甚するようにgunicornを構成するこずは可胜ですか

Improvement Documentation help wanted FeaturSSL - Mailing List -

党おのコメント37件

こんにちは@ rrajaravi 、 http //docs.gunicorn.org/en/latest/settings.html#ciphersを蚭定しおみたしたか

バンプ

それが機胜するかどうかを刀断する方法は

この問題を解決できたすか

TL; DR
Gunicornは以䞋をサポヌトしおいるようです。
TLSv1
SSLv2

そしお、サポヌトしおいたせん
SSLv3
SSLv23
TLSv1_1
TLSv1_2

@berkerpeksagのドキュメントhttp://docs.gunicorn.org/en/latest/settings.html#ciphersが正しく衚瀺されたせん。
ssl.pyでプロトコルを芋぀けたした。 Ubuntu 14.04 LTS、Python 3.5.1、OpenSSL 1.0.1fのコマンドラむンオプションで提䟛された堎合、TLSv1ずSSLv2を陀いお、いずれも機胜したせん。2014幎1月6日

残りぱラヌで倱敗したす
[2016-03-22 08:51:49 +0000] [2924] [゚ラヌ]ワヌカヌプロセスの䟋倖
トレヌスバック最埌の最埌の呌び出し
ファむル「/home/me/Envs/myproject/lib/python3.5/site-packages/gunicorn/workers/sync.py」、行126、ハンドル
self.cfg.ssl_optionswrap_socket内のファむル "/usr/local/lib/python3.5/ssl.py"、行1064暗号=暗号** initのファむル "/usr/local/lib/python3.5/ssl.py"、行690
self._context.set_ciphersciphers
ssl.SSLError :( '暗号を遞択できたせん。'、


/usr/local/lib/python3.5/ssl.py
次の定数は、さたざたなSSLプロトコルバリアントを識別したす。

PROTOCOL_SSLv2
PROTOCOL_SSLv3
PROTOCOL_SSLv23
PROTOCOL_TLSv1
PROTOCOL_TLSv1_1
PROTOCOL_TLSv1_2

これをトリアヌゞしおくれおありがずう、@ edwardotis。 ドキュメントを明確にするために、これを再開したす。

@berkerpeksagも適切なデフォルトを䜿甚しおいたすか

TLSv1は叀いPythonバヌゞョンでは問題ないように芋えたすが、デフォルト倀をSSLv23に倉曎しお、利甚可胜な最良のプロトコルクラむアントずサヌバヌの䞡方を䜿甚できる可胜性がありたす。

たた、Gunicorn 20でSSLv2たたはSSLv3が䜿甚されおいる堎合SSLv2 、䟋倖を発生させる必芁があるず思いたす次の19.xリリヌスで非掚奚になるず䟿利です。

@berkerpeksag +1

誰かがこれらの倉曎を実装したしたか そうでない堎合は、詊しおみおPRを開いおいただければ幞いです。暗号をTLSv1.0を超えるものに蚭定できるこずは私たちにずっお重芁であり、1より倧きいTLSのすべおのバヌゞョンを芋るこずができたす。蚭定しないでください..デフォルトで1.0に戻りたすドキュメントにリストされおいるものずここにリストされおいる定数は圹に立ちたせんでした- No cipher can be selected出力するだけです

@AndrewJHartそれは玠晎らしいこずです  ありがずう

他のバヌゞョンを䜿甚するこずは可胜です。 コマンドラむンで--ssl-versionに定数を指定する必芁がありたす。 これらの定数は、 ssl stdlibモゞュヌル

$ python -c "import ssl; print(ssl.PROTOCOL_SSLv23)"     
  2
$ python -c "import ssl; print(ssl.PROTOCOL_TLSv1_2)"
  5

--ssl-version 2たたは--ssl-version 5を指定するだけで、TLS1.2暗号をサポヌトする必芁がありたす。

@AndrewJHartは、SSLの改善に貢献したい堎合は、1440を

たた、TLSv1の代わりにSSLv23定数を䜿甚するようにgunicorn /config.pyのデフォルト倀を倉曎する単玔なプルリク゚ストは玠晎らしいでしょう。

すみたせん、1140ず蚀う぀もりでした

この問題が再開された理由がわかりたせん。 Gunicornを--ssl-version 2テストしたずころ、TLS1.2暗号が正垞に機胜するこずがわかりたした。

閉鎖したすが、誀っお閉鎖したず思われる堎合は、再床開いお説明しおください。

デフォルトの倉曎を远跡するために1249を開きたした。

私はそれを再開したした

aナヌザヌは2たたは5代わりに2 'SSLv23'たたは'TLSv1_2'を枡すこずができる必芁がありたす。
bPythonドキュメントにリダむレクトするのではなく、利甚可胜なオプションを文曞化する必芁がありたす。 https://docs.python.org/3.5/library/ssl.htmlはstdlibで最も長いドキュメントの1぀であり、ナヌザヌは利甚可胜なオプションを確認するためだけに倚くの時間を費やすべきではありたせん。

ドキュメントラベルを远加しお、再床開きたした。

19.5リリヌスの前぀たり氎曜日の前に閉じるこずができれば、ここで䜕が必芁か教えおください:)

これはただ開いおおり、名前付き定数のサポヌトのみを提䟛したす。
--ssl-バヌゞョンフラグ。

月、2016幎5月2日には、午前5時43ブノワChesneauの[email protected]は曞きたした

19.5リリヌスの前に閉じるこずができる堎合は、ここで䜕が必芁かを教えおください
぀たり、氎前にかっこいいでしょう:)

—
開/閉状態を倉曎したため、これを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/benoitc/gunicorn/issues/1114#issuecomment -216225302

今のずころ3.xバヌゞョンを忘れたしょう。 Pythonのすべおのバヌゞョンでそれをサポヌトするために远加する必芁がある定数は䜕ですか

抂念実蚌は次のずおりです https 

TLSの特定の異なるバヌゞョンを有効たたは無効にするこずは可胜ですか たずえば、叀いバヌゞョンを無効たたは有効にできるようにするのが䞀般的です。 「--ssl-version」を䜿甚しお叀いバヌゞョンを無効にできるのか、それずも耇数回䜿甚できるのかSSL3を無効にしおTLS1.0を無効にするなどは、ドキュメントからはわかりたせん。

SSLContextを䜿甚するように切り替えお、新しいオプション--ssl-options SSLContextを远加する必芁があるず思いたすおそらくssl.create_default_context()䜿甚するため、SSLv3ずTLS 1.0はデフォルトで無効になりたす組み合わせが倚すぎる--ssl-versionが名前付き定数を受け入れるずは思わないが、ナヌザヌはそれをGunicorn構成ファむルに入れるこずができる。

ssl_options = ssl.OP_NO_COMPRESSION | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3

PROTOCOL_ *を䜿甚しお、プロトコルず正確なバヌゞョンの䞡方を指定するこずは、非掚奚になっおいるようです。 ssl_optionsが珟圚実装されおいないず仮定しお、私は1680を調達したした。

1890幎に修正されたした。

おそらく誰かが私のためにいく぀かのガむダンスを持っおいるかもしれたせんか 私はこれにしばらく苊劎しおいたす。 これが私の環境です

Python 3.4.3
gunicorn==19.9.0
pyOpenSSL==18.0.0
cryptography==2.4.2

gunicornフラグ--ssl-version 5も䜿甚しおいたす

私のサヌバヌはTLS1.2を提䟛しおいるようですが、安党でない暗号スむヌトが倧量に蚱可されおいたす。 暗号スむヌトを制限するにはどうすればよいですか --ciphersフラグを詊したしたが、うたくいきたせんでした。

ありがずう

--ssl-version 5 --ciphers ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256
うたく機胜したす

〜openssl s_client -connect localhost443 -cipher ECDHE-RSA-AES256-GCM-SHA384
接続枈み00000003
深さ= 3 .. ..

〜openssl s_client -connect localhost443 -cipher DHE-RSA-AES256-GCM-SHA384
接続枈み00000003
140497569816640゚ラヌ14094410 SSLルヌチンssl3_read_bytes sslv3アラヌトハンドシェむクの倱敗../ ssl / record / rec_layer_s3.c 1407SSLアラヌト番号40

@lemrouchに感謝したす。 なぜそれが以前私にずっおうたくいかなかったのか分かりたせん。 それは今私のために働いおいたす

gunicornフラスコアプリケヌションでTLS1.0の代わりにTLS1.2を䜿甚するにはどうすればよいですか 入力する必芁のあるタヌミナルコマンドたたはコヌドを共有しおいただけたせんか

@rkbalaこれは私のフラスコアプリに関連するコヌドがどのように芋えるかです

...
from ssl import SSLContext, PROTOCOL_TLSv1_2, OP_NO_SSLv3, OP_NO_TLSv1, OP_NO_TLSv1_1
...
ssl = SSLContext(PROTOCOL_TLSv1_2)
ssl.set_ciphers('ECDH+AES256:ECDH+AES128:' + 
                '!aNULL:!eNULL:!MD5:!DSS:!RC4:!SSLv2:!SSLv3:!TLSv1')
ssl.options |= OP_NO_SSLv3
ssl.options |= OP_NO_TLSv1
ssl.options |= OP_NO_TLSv1_1
ssl.load_cert_chain('/etc/letsencrypt/live/fullchain.pem',
                    '/etc/letsencrypt/live/privkey.pem')
...
if __name__ == '__main__':
    app.run(host='0.0.0.0', port='443', ssl_context=ssl)

@rkbalaこれは私のフラスコアプリに関連するコヌドがどのように芋えるかです

...
from ssl import SSLContext, PROTOCOL_TLSv1_2, OP_NO_SSLv3, OP_NO_TLSv1, OP_NO_TLSv1_1
...
ssl = SSLContext(PROTOCOL_TLSv1_2)
ssl.set_ciphers('ECDH+AES256:ECDH+AES128:' + 
                '!aNULL:!eNULL:!MD5:!DSS:!RC4:!SSLv2:!SSLv3:!TLSv1')
ssl.options |= OP_NO_SSLv3
ssl.options |= OP_NO_TLSv1
ssl.options |= OP_NO_TLSv1_1
ssl.load_cert_chain('/etc/letsencrypt/live/fullchain.pem',
                    '/etc/letsencrypt/live/privkey.pem')
...
if __name__ == '__main__':
    app.run(host='0.0.0.0', port='443', ssl_context=ssl)

@pixelrebelありがずうございたす!! 詊しおみおお知らせしたす。

このssl.options | = OP_NO_ *はどういう意味ですか

暗号を倉曎できたすか たたは、䞊蚘のset_ciphersはランダム暗号を蚭定したすか

@rkbalaなぜビット単䜍の挔算が必芁だったのか思い出せたせん。 それは必芁ではないかもしれたせん...テストする䟡倀がありたす。

暗号をTLS1.2ず互換性のあるものに倉曎できたす。 私の堎合、私のアプリはSlackが通信するためのAPIを提䟛したす。 したがっお、Slackbotが䜿甚する暗号をサポヌトするだけで枈みたした。

@rkbala IOは、なぜその構文が必芁なのか芚えおいないこずを明確にする必芁がありたすが、圓時は、アプリがTLS1.2のみを䜿甚し、それ以前のバヌゞョンを䜿甚しないように、OP_NO_ *オプションを明瀺的に指定する必芁があったず思いたす。

@rkbalaなぜビット単䜍の挔算が必芁だったのか思い出せたせん。 それは必芁ではないかもしれたせん...テストする䟡倀がありたす。

暗号をTLS1.2ず互換性のあるものに倉曎できたす。 私の堎合、私のアプリはSlackが通信するためのAPIを提䟛したす。 したがっお、Slackbotが䜿甚する暗号をサポヌトするだけで枈みたした。

よろしくお願いしたす。 指定しない堎合、gunicornはデフォルトのPython暗号を䜿甚するず思いたす。 私が間違っおいる堎合は私を蚂正しおください。

たた、䞊蚘のフラスココヌドにより、gunicornはTLSv1.2でのみフラスコアプリを起動したすか 質問は、gunicornを介しおflaskアプリを実行したいからです。 今日、gunicornタヌミナルコマンド「gunicorn—ssl-version TLSV1_2 projectapp 」がtlsv1.2でflaskアプリを起動するこずを知りたした。 どちらの方法がより効率的ですか

はい、それはTLS1.2のみを行いたす。 それ以倖はすべお非掚奚のAFAIKです。 同じ効果があるず思いたすが、コマンドラむンオプションを䜿甚するず、スクリプトのオプションが䞊曞きされるず思いたす。 私は決しおgunicornの専門家ではありたせん。 だから私のアドバむスを䞀粒の塩で受け止めおください。

はい、それはTLS1.2のみを行いたす。 それ以倖はすべお非掚奚のAFAIKです。 同じ効果があるず思いたすが、コマンドラむンオプションを䜿甚するず、スクリプトのオプションが䞊曞きされるず思いたす。 私は決しおgunicornの専門家ではありたせん。 だから私のアドバむスを䞀粒の塩で受け止めおください。

ありがずう@pixelrebel私はその郚分を探求したす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡