0

サーバーAで実行されているアプリケーションから、別のインスタンスサーバーBで実行されている同じアプリケーションにコンテンツをdbに書き込む必要があるという要求があります。

DB の読み書きは SOAP API 経由です

どちらのサーバーにも独自の client.truststore ファイルがあります。

サーバー A の client.trustsrore を使用するスタンドアロンのサーバー C から、サーバー A の DB への書き込みを読み取ることができます。また、サーバー B のクライアント トラストストアを使用して、サーバー B の DB への書き込みを読み取ることができます。

サーバーAから読み取り、サーバーBに書き込む必要があるため、両方のサーバーに新しいキーストアファイルを導入し、system.propertiesを適切に設定しました(キーストアの場所とパスワードの両方)。このキーストアは、権限を持つ両方のサーバーに適切にコピーされました。

秘密鍵を使用して証明書を作成し、keytool コマンドを使用してキーストア ファイルを作成しました。

キーストアファイルを2つのサーバーに保持しても機能しなかったためです。それは常にunknown_certificateを訴えました。/$JAVA_HOME/lib/security/ の下の cacerts に証明書をインポートしようとしました。しかし、これでもハンドシェイク例外のある不明な証明書が得られます。

他にやりたいことはありますか?

よろしく
ディーラジ・ジョシ

4

2 に答える 2

1

アプリケーション サーバーの証明書は、そのサーバーのホスト名と一致する必要があります。2 つの異なるホスト名を持つ 2 つの異なるサーバーがあるため、ここで問題になる可能性があります。

姓名の入力を求められた場合、証明書の生成プロセス中に有効なホスト名を入力する必要があります。

What is your first and last name?
[Unknown]:  myserver.domain.com

しかし、その場合、タスクを達成するために何ができるかよくわかりません。おそらく、サーバーには、対応するホスト名が異なる2つの異なる証明書が必要です。ただし、これらの証明書は、データベースによって信頼されている 1 つの親証明書によって署名されている必要があります。そんな感じ。

于 2012-09-28T05:54:14.193 に答える
0

わかりました 解決策は簡単でした。2 つのサーバーの証明書を使用して新しいストアを作成する

keytool -import -alias <alias> --keystore <newstore> -file server1.crt -storepass changeit
keytool -import -alias <alias> --keystore <newstore> -file server2.crt -storepass changeit

newstore を SSL 通信に使用できるようになりました。

よろしく
ディーラジ・ジョシ

于 2012-09-28T10:06:36.937 に答える