2016-07-07 7 views
0

これは奇妙なものです。 Solaris上でTomcat 8/Java 8を実行する。 SSL用に設定されたNIOコネクタ。すべてがうまくいっていたようですが、FirefoxとChromeでは、マネージャを介してwarファイルをデプロイすると失敗します。古いエミュレーションノードでIE 11を使用しても動作するようです。さまざまなブラウザに異なる苦情があります: FF - 安全な接続に失敗しました。このサイトにはアクセスできません。 他のすべてがうまくいくようです - あなたはマネージャにログオンできます。SSL接続は適切に設定されているように見えますが、さまざまなマネージャページを参照できますが、ファイルアップロードのデプロイは失敗します。私はマネージャのログをチェックし、このリクエストに対するエラーはbufferCryptとNativeGCMCipherに関係しているようです。 私は試しました: - 最新のJDK(U92)へのアップデート - OracleはNativeGCMCipherのバッファサイズの決定に関する問題を報告しました。これは修正済みでした。 - ソケットに大きなバッファを設定しようとしました。socket.rxBufSize、 socket.txBufSize、socketBuffer - BIOコネクタへの切り替えを試みました(これは別のサーバーでこの問題を修正したと思いました) しかし、何の不運もありませんでした。Tomcat 8 Managerのwar deployアップロードがSSLで失敗する

誰でもアドバイスをいただければ幸いです。私たちはアップロードやシンプルコピーの展開にIEを使うことができますが、これらのサーバーで25のアプリケーションを使用するときに私たちを噛み砕く可能性のあるこの大きな兆候があることは慎重です。ここで

は、マネージャのログからのスタックトレースです:

07-Jul-2016 13:44:12.597 INFO [http-nio-8086-exec-19] org.apache.catalina.core.ApplicationContext.log HTMLManager: list: Listing contexts for virtual host 'localhost' 
07-Jul-2016 13:44:50.623 SEVERE [http-nio-8086-exec-19] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [HTMLManager] in context with path [/manager] threw exception 
java.security.ProviderException: Could not determine buffer size 
    at javax.crypto.CipherSpi.bufferCrypt(CipherSpi.java:843) 
    at javax.crypto.CipherSpi.engineDoFinal(CipherSpi.java:730) 
    at javax.crypto.Cipher.doFinal(Cipher.java:2460) 
    at sun.security.ssl.CipherBox.decrypt(CipherBox.java:535) 
    at sun.security.ssl.EngineInputRecord.decrypt(EngineInputRecord.java:200) 
    at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:974) 
    at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907) 
    at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781) 
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) 
    at org.apache.tomcat.util.net.SecureNioChannel.read(SecureNioChannel.java:455) 
    at org.apache.tomcat.util.net.NioBlockingSelector.read(NioBlockingSelector.java:173) 
    at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:251) 
    at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:232) 
    at org.apache.coyote.http11.InternalNioInputBuffer.fill(InternalNioInputBuffer.java:133) 
    at org.apache.coyote.http11.InternalNioInputBuffer$SocketInputBuffer.doRead(InternalNioInputBuffer.java:177) 
    at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:110) 
    at org.apache.coyote.http11.AbstractInputBuffer.doRead(AbstractInputBuffer.java:416) 
    at org.apache.coyote.Request.doRead(Request.java:469) 
    at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:338) 
    at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:395) 
    at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:363) 
    at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:190) 
    at java.io.FilterInputStream.read(FilterInputStream.java:133) 
    at org.apache.tomcat.util.http.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:132) 
    at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:946) 
    at org.apache.tomcat.util.http.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:850) 
    at java.io.InputStream.read(InputStream.java:101) 
    at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:98) 
    at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:68) 
    at org.apache.tomcat.util.http.fileupload.MultipartStream.readBodyData(MultipartStream.java:539) 
    at org.apache.tomcat.util.http.fileupload.MultipartStream.discardBodyData(MultipartStream.java:563) 
    at org.apache.tomcat.util.http.fileupload.MultipartStream.skipPreamble(MultipartStream.java:580) 
    at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:874) 
    at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:854) 
    at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:256) 
    at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:280) 
    at org.apache.catalina.connector.Request.parseParts(Request.java:2730) 
    at org.apache.catalina.connector.Request.parseParameters(Request.java:3064) 
    at org.apache.catalina.connector.Request.getParameter(Request.java:1093) 
    at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:380) 
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:185) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
    at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:194) 
    at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:318) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617) 
    at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:676) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.crypto.ShortBufferException: Output buffer must be (at least) 12272 bytes long 
    at com.oracle.security.ucrypto.NativeGCMCipher.engineUpdate(NativeGCMCipher.java:266) 
    at javax.crypto.CipherSpi.bufferCrypt(CipherSpi.java:828) 
    ... 67 more 

答えて

0

あなたのポストの最後の行は、ソケットの出力バッファを参照してください。

tomcat configuration page

はsocketBuffer ソケット出力バッファリングのために提供されるバッファのサイズ(バイト単位)

を読み出します。 -1を指定して、 バッファの使用を無効にすることができます。デフォルトでは、9000バイトのバッファが使用されます。

だから最初のステップは、server.xmlであなたのsslコネクタを見つけ、socketBuffer = "12272"またはそれ以上の値を追加することです。

これはまたチューニングのtomcatでibm's tomcat tuning pageに記載されています。

+0

私はこれを試しました。つまり、socketBuffer = "12272"でしたが、アップロードの展開はまだ失敗しました。私はもう一度それを試して、さらに奇妙なことを明らかにした。 firefoxでアップロードのデプロイを試みると、バッファエラーは発生しませんが、Chromeで試してみると、マネージャのログにバッファエラーが表示されます。 – Fitzjava

+0

ブラウザに関連している問題をさらに話しますが、なぜ私は困惑していますか。私は、バッファエラーが誤解を招く、または無関係なエラーだと思う傾向がありますが、それ以上のことはありません。私はBIOコネクタに落ちるかもしれないと思ったが、同じ問題を抱えている。私はそれがSSLの設定と関係があると思っています。私たちは発行された内部証明書を使用していますが、私たちの組織 – Fitzjava

+0

とsslProtocol = "TLS" – Fitzjava

0

私のシステムにも同じ問題があります。 1日の検索の後、私はoracle ucrypto JCEプロバイダが有罪であると判断しました。 だから私は開いたファイルjdk1.8.0_121/JRE/libに/セキュリティ/ java.securityとはよく、私のシステムの仕事を再起動した後のライン

#security.provider.1=com.oracle.security.ucrypto.UcryptoProvider ${java.home}/lib/security/ucrypto-solaris.cfg 

をコメントアウト。

+0

ヒントをお願いします!私はそれを調べます。このプロバイダを無効にすることの欠点があると思いますか?それはいくつかのデフォルトのucrypto プロバイダに戻っていますか? – Fitzjava

+0

もう1つの情報。私は、しばらく前に頻繁に展開する開発者と二重にして、彼らはもはや問題を経験していないと言いました。今日はもう一度それを確認する人もいます。 (私たちは何も変更していませんでした!)私はこの問題がブラウザに関連していたと思います。途中でブラウザのアップデートが問題を解決しました。 – Fitzjava

+0

ucryptoを無効にすると、jdkはSUNをJCEプロバイダとして使用します。 Oracleドキュメントでは、ucryptoはデフォルトのjava JCEプロバイダ(SUN)よりもsolarisで動作することを示しています。しかし、私の状況では、ucryptoはバグのようです。 –

関連する問題