Включить отладочное ведение журнала для проблем SSL в Java

Проблемы с SSL часто встречаются при работе с корпоративными приложениями, но их отладка непроста. В основном из-за отсутствия достаточной информации в журналах.

Например, по разным причинам вы получите такое исключение: Ошибка ввода-вывода: java.security.NoSuchAlgorithmException: Ошибка построения реализации.

Трассировка стека исключений может выглядеть следующим образом:

com.howtodoinjava.aav.exception.SystemException: I/O error: java.lang.RuntimeException: Unexpected error:java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty; nested exception isjavax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException:the trustAnchors parameter must be non-emptyat com.howtodoinjava.aav.profilemaintenance.dao.impl.ClassName.methodName(ClassName.java:53)at com.howtodoinjava.aav.profilemaintenance.dao.impl.ClassName$FastClassByCGLIB$581a61ad.invoke()at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)at com.howtodoinjava.ecom.common.web.transaction.aop.RequestTraceInterceptor.invoke(RequestTraceInterceptor.java:74)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625)at com.howtodoinjava.aav.profilemaintenance.dao.impl.ClassName$EnhancerByCGLIB$233d14.methodName()at com.howtodoinjava.aav.profilemaintenance.service.impl.classImpl.methodName(classImpl.java:25)at com.howtodoinjava.idp.ptui.web.action.DemoAction.execute(DemoAction.java:97)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)

1. Проблема

Ну, как я уже сказал, причин этих ошибок может быть N. Некоторые из них могут быть:

  • файл не найден
  • неверный пароль
  • неправильный тип хранилища ключей
  • неправильные местоположения сертификатов
исключения-примечания

2. Решение

Чтобы решить это исключение SSL, вам необходимо получить больше информации, которая может точно сказать, что происходит. Чтобы получить эту информацию, включите ведение журнала отладки SSL, передав аргумент времени выполнения javax.net.debug=ssl вашему серверу/программе.

-Djavax.net.debug=ssl

После прохождения этого флага вы увидите подробные журналы, связанные с вашей проблемой SSL, и в большинстве случаев они также сообщат вам точную первопричину.

Прокрутить вверх