2017-02-20 16 views
0

私たちはAMQP接続を保護する最良の方法を探しています。私たちのAMQPクライアントは世界中に分散しており、AMQPサーバーへの接続は安全である必要があります。私たちは、oasis-open.orgの推奨するトランスポートレベルのセキュリティにTLSを使用しています。そして今、AMQPクライアントのためのAUTHメカニズムを探しています。AMQP。証明書ベースの認証でJWTを使う方が良いですか

1つの方法は、ユーザーを認証するために同じTLS証明書を使用し、2番目の方法はAMQPの認証メカニズムとして新しい有名なJWTを使用することです。クライアントがAMQPキューをパブリッシュまたはサブスクライブしているときは、JWTをサーバーに送信することによって、サーバーが認証を取得する必要があります。

+0

JWTは、クライアントがクレデンシャルを提示した後に発行されます。クライアント側の資格情報として今何を使用していますか?例:username-password – pedrofb

+0

「AMQP接続をセキュリティで保護するための最良の方法を探しています」_セキュリティ、ユーザビリティ、メンテナンスの容易さ? – pedrofb

+0

私たちはセキュリティとメンテナンスの容易さを求めています。私たちは通信チャネルのセキュリティのためにTLSを使用してトランスポート層を確保しました。しかし、まだ効果的な認証メカニズムを探していますか?プレーンなユーザー/パスワードを使用するのか、認証のために証明書を共有するのでしょうか?証明書を使用する場合、これらは自己署名されるか、digicertなどのCAから署名されるべきですか? – learner

答えて

1

JWTは、クライアントが安全なTLSチャネルを通じて資格証明を提示した後に発行されます。ここで重要なポイントは、認証機構

  • ユーザ/パスワードは、使用と保守が容易ですが、クライアント証明書を使用するよりも、それ以下のセキュアれます。ユーザーは弱いパスワードを設定したり、注釈を付けたポストイットを失うことがあります。

  • クライアント証明書には、クライアントコンピュータに追加のインストールが必要です。証明書を盗むことは、システムのキーストアを使用したり、パスワードで保護したり、ハードウェアを使用したりすることができるため、はるかに困難です。しかし、証明書の配布は複雑なプロセスです。独自のCAを使用することもできますが、どのように証明書をユーザーおよびインストールプロセスに適用するかを検討する必要があります。また、双方向TLSチャネルの設定は、クライアント側で複雑になります。私は外部のCAを使用することは選択肢ではないと思います。なぜなら、各ユーザーはそのCAから証明書を取得する必要があり、制御できないプロセスだからです。

+0

もう一つのアプローチは、SASL認証技術をDigest-MD5で使用することです。私はこれをApache QPID security Guideから取り出しました。 https://qpid.apache.org/releases/qpid-0.30/cpp-broker/book/chap-Messaging_User_Guide-Security.html。クライアント証明書の複雑さを避けるために、SASLは優れた認証方法を採用していますか? SASLの認証メカニズムとしてどのようなメカニズムを使用する方が良いでしょうか? – learner

+0

ドキュメントを読む:Digest-MD5を使用したSASLは基本的にユーザ/パスワードメカニズムですが、パスワード自体を送信する代わりに、共有秘密(パスワード)でハッシュされたチャレンジを送信します。チャンネルを保護するTSLを使用しなかったのは興味深いでしょう。あなたが高いセキュリティレベルを必要とする場合を除いて、私の意見では、ほとんどの場合、ユーザー/パスワードメカニズムで十分です(GoogleまたはFacebookはそれを使用します)。次に、クライアント証明書のような特別なセキュリティ要素を追加する必要があります。しかし、証明書の生成と配布は複雑です。あなたがそれをやる方法を知っている場合のみそれを考慮する – pedrofb

関連する問題