私が働く会社は、検索で使用するさまざまなソースをクロールしてインデックスを作成するソフトウェアを作成しています。この場合、SSLを使用してLotus Notesに接続しようとしています。これは「devで動作しましたが、失敗しました」という古典的なケースです。SSLポート63149のLotus Notes DIIOPに接続できません
問題は、Lotus Notesの専門家ではなく、開発者や技術者であるという事実によってさらに複雑になります。
基本的に私たちは、このコマンドを使用してDIIOP IORテキストファイルをつかむために、ロータスに接続するJavaソフトウェアの一部を持っている:
String ior = NotesFactory.getIOR(host, userIOR, pwdIOR);
は今、これは非SSL接続で、接続するためのユーザー名とパスワードが必要です。これは毎回完璧に機能します。
はその後、我々は、使用してセッションを作成しようと、この:
session = NotesFactory.createSessionWithIOR(ior, args, this.user, this.pwd);
場所:
NotesException: Session closed due to communications failure
at lotus.domino.cso.ORBCallback.make_error(Unknown Source)
at lotus.priv.CORBA.iiop.Generic.make_error(Unknown Source)
at lotus.priv.CORBA.portable.ObjectImpl._invoke(Unknown Source)
at lotus.domino.corba._IObjectServerStub.createSession(Unknown Source)
at lotus.domino.cso.Session.initSession(Unknown Source)
at lotus.domino.cso.Session.<init>(Unknown Source)
at lotus.domino.cso.Session.createSession(Unknown Source)
at lotus.domino.NotesFactory.createSessionUP(Unknown Source)
at lotus.domino.NotesFactory.createSessionWithIOR(Unknown Source)
[ ... ]
Caused by: org.omg.CORBA.COMM_FAILURE: java.net.SocketException: Connection reset: Connection closed: Host: <redacted> Port: 63149 vmcid: 0x0 minor code: 1 completed: Maybe
at lotus.priv.CORBA.iiop.IIOPConnection.purge_calls(Unknown Source)
at lotus.priv.CORBA.iiop.ReaderThread.run(Unknown Source)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:154)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at lotus.priv.CORBA.iiop.Message.readFully(Unknown Source)
at lotus.priv.CORBA.iiop.Message.createFromStream(Unknown Source)
at lotus.priv.CORBA.iiop.IIOPInputStream.prefill(Unknown Source)
at lotus.priv.CORBA.iiop.IIOPConnection.createInputStream(Unknown Source)
... 1 more
は、私が最も理解:私たちは常にこのスタックトレースを受ける接続する場合
args[0] = "-ORBEnableSSLSecurity";
その理由の一般的な理由は、TrustedCerts.classファイルを正しくインポートしていないためです。 rをダブルパスとトリプルチェックした後、それはクラスパスに入っているだけです(実際には開発環境で動作します)。
SSLを無効にするかどうかはわかります私たちのコードは非SSL DIIOPポート63148に接続し、正常に動作しますが、すべてのデータをSSL経由で渡す必要があるというプロジェクト要件です。
これは実際に私の実際の質問に私をもたらします:この接続が失敗する理由をLotusに報告するにはどうすればよいですか?
DIIOPログレベルを4に上げようとしましたが、明らかにすべての送信が表示されるはずですが、接続しようとするとログに何も表示されません。また、DIIOPサービスが確実に実行されていることと、正しいポートでも注意が必要です。
また、ファイアウォールを介してリモートボックスに接続していることを確認しました。また、RedHatマシンのTCPDUMPは、接続の切断に応答する前にリモートLotus Notesホストとの接続を確立していることをはっきりと示しています。
[Pertinent Information]
Application: Java
Library: NCSO.jar
Lotus Version: Domino 8.5.3 FP6
Lotus Server: Windows Server 2008 Standard
Ports: 63148 (non-SSL), and 63149 (SSL)
まあ、私はもう一歩近づいています。私のクライアントのTrustedCerts.classファイルで使用されているサードパーティーのCA証明書が、私たちに有用なTrustedCerts.classファイルを与えていないようです。 変更があるかどうかを確認するために自己署名証明書を設定しようとしています – Paul