serposcopeのエラー
serposcopeについての全投稿は/tag/serposcopeにあるので参照されたい
問題発生
なぜか突然、ブラウザ上に以下のようなエラーを表示して動作しなくなってしまった。バージョンは2.8.0である。
Oops. An error occurred.
Please contact support if error persists.
/var/log/serposcopeの中のログを見てみると、以下の表示
[2018-10-16 22:40:56,515] [qtp1720435669-10] WARN o.e.j.s.ServletHandler - /
java.lang.RuntimeException: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
at ninja.utils.CookieEncryption.decrypt(CookieEncryption.java:139) ~[serposcope-2.8.0.jar:na]
at ninja.session.SessionImpl.init(SessionImpl.java:117) ~[serposcope-2.8.0.jar:na]
at ninja.utils.AbstractContext.init(AbstractContext.java:95) ~[serposcope-2.8.0.jar:na]
at ninja.servlet.NinjaServletContext.init(NinjaServletContext.java:128) ~[serposcope-2.8.0.jar:na]
at ninja.servlet.NinjaServletDispatcher.service(NinjaServletDispatcher.java:82) ~[serposcope-2.8.0.jar:na]
at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:287) ~[serposcope-2.8.0.jar:na]
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:277) ~[serposcope-2.8.0.jar:na]
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:182) ~[serposcope-2.8.0.jar:na]
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) ~[serposcope-2.8.0.jar:na]
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:119) ~[serposcope-2.8.0.jar:na]
at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:133) ~[serposcope-2.8.0.jar:na]
at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:130) ~[serposcope-2.8.0.jar:na]
at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:203) ~[serposcope-2.8.0.jar:na]
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:130) ~[serposcope-2.8.0.jar:na]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[serposcope-2.8.0.jar:na]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.server.Server.handle(Server.java:497) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [serposcope-2.8.0.jar:na]
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [serposcope-2.8.0.jar:na]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_181]
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:991) ~[sunjce_provider.jar:1.8.0_171]
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:847) ~[sunjce_provider.jar:1.8.0_171]
at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446) ~[sunjce_provider.jar:1.8.0_171]
at javax.crypto.Cipher.doFinal(Cipher.java:2164) ~[na:1.8.0_171]
at ninja.utils.CookieEncryption.decrypt(CookieEncryption.java:129) ~[serposcope-2.8.0.jar:na]
... 27 common frames omitted
[2018-10-16 22:40:56,523] [qtp1720435669-10] ERROR n.s.NinjaJetty$SilentErrorHandler - An error occurred that cannot be handled by Ninja null. Responsing with default error page.
何やら暗号解除にてエラーが発生しているらしいのだが、当然何がおかしいかは不明。
最新版にする
とりあえず、2.10.0の最新版にしてみる–>全く同じエラー
データベースを新たにする
別のmysqlデータベースを作成し、それを使わせるようにすると正常に動作する。
原因らしきもの
おそらくこれが原因だろう。https://github.com/ninjaframework/ninja/issues/605およびhttps://github.com/ninjaframework/ninja/issues/532
Javaのバージョンを変更したことがいけなかったらしい。何かしらセッションクッキーの暗号化が変わってしまうらしい。
ではセッションクッキーを削除してしまえば問題は解決するのだろうか?
データベースを元に戻し、セッションクッキーを削除する
と思い、データベーステーブルを調べてみるが、それらしきフィールドが無し。
設定ファイルに「serposcope.db.debug=true」を追加し、以前のデータベースに戻して起動してみると、何事もなかったように起動する。
再度、「serposcope.db.debug=true」を削除して再度起動してみても問題無し。
結局どこが悪いのか不明。