2
4

4 に答える 4

4

libeay32.dll と ssleay32.dll もクライアント アプリケーションと共に展開する必要があります。

私の Delphi XE DataSnap 開発コースウェア マニュアルからの引用:

「TCP/IP と RSA および PC1 フィルターを使用して DataSnap スタンドアロン サーバーを展開する場合は、2 つの Indy 固有の SSL DLL (libeay32.dll と ssleay32.dll) も展開する必要があります。または、それらがサーバー マシンに既に存在することを確認してください。これらの DLL は RSA フィルタ (PC1 フィルタで使用されるパスワードを暗号化する) に必要です. これら 2 つの DLL がないと、サーバーに接続することができなかったので、クライアントがサーバーに接続しようとすると、「正常に接続が閉じられました」というメッセージが表示されます。 2 つの DLL をロードして RSA フィルターを開始し、PC1 キーなどを暗号化します。

ちなみに、RSA および PC1 フィルターを使用して TCP/IP サーバーに接続するか、HTTPS を使用して ISAPI フィルターに接続するかに関係なく、DataSnap クライアントには同じ 2 つの DLL が必要です。」

グローチェス、ボブ・スワート

于 2011-02-18T07:52:40.560 に答える
4

おそらく DataSnap のバグです。私はまったく同じ問題を抱えており、ここにQCレポートがあります. http://qc.embarcadero.com/wc/qcmain.aspx?d=91180

QC レポートに投票して修正し、Delphi-XE の更新を待ちます。

編集1 クレイジーなアイデアです。クライアントでフィルターを指定しないでください。

トランスポート フィルターに関する Pawel Glowacki の論文を次に示します。 http://edn.embarcadero.com/article/41293 彼は、クライアントの DataSnap ドライバの Filters プロパティに ZLibCompression を追加する必要があると具体的に述べています。

そうしないようにテストしましたが、問題なく動作します。uses 句に DBXCompressionFilter を追加する必要があります。そうしないと、「ZLibCompression is not registered」エラーが発生します。

サーバーに PC1 と ZLibCompression があり、クライアントにフィルターがない場合、すべてが期待どおりに機能します。トラフィックを確認したところ、暗号化および圧縮されています。

Embarcadero の誰かが、これが本来あるべき方法であると確認するまで、私はそれを使用する前によく考えます。

編集 2これは、Bob Swart による Embarcadero ディスカッション フォーラムの投稿で、サーバーにフィルターを追加するだけで十分であると述べています。Embarcadero に直接ではありませんが、かなり近いです :) https://forums.embarcadero.com/thread.jspa?threadID=48875&tstart=0

于 2011-02-21T10:13:28.157 に答える
3

Embarcadero の誰かが、これが本来あるべき方法であると確認するまで、私はそれを使用する前によく考えます。

これは本当です。クライアントでフィルターを指定しない場合、接続中にサーバーのフィルターが何であるかが最初のハンドシェイク プロトコルで通知され、自動的に追加されます。これは、フィルターを使用する完全に合理的で安全な方法です。

ただし、これは逆ではないことに注意してください。サーバーは、接続しているクライアントからフィルターを採用しません。クライアントに RSA フィルターがあり、サーバーに一致するものがない場合、サーバーに一致する RSA フィルターがないことを示す例外が接続時に発生します。サーバー上ではなくクライアント上にあるその他のフィルタは無視されます。

于 2011-03-18T19:17:50.323 に答える
2

フィルターの順序を逆にして、クライアントを常に反対のサーバーのままにしてみてください。例えば

Server
     Filters = <
       item
         FilterId = 'ZLibCompression'
         Properties.Strings = (
           'CompressMoreThan = 1024')
       end
       item
         FilterId = 'PC1'
         Properties.Strings = (
           'Key = test')
       end>

Client
         Params.Add ('Filters = {"PC1": {"Key": "test"}, "ZLibCompression": {"CompressMoreThan": "1024"}}');
于 2012-10-31T13:00:59.217 に答える