forum.bitel.ru http://forum.bitel.ru/ |
|
Ошибка при проверке сертификата http://forum.bitel.ru/viewtopic.php?f=18&t=8290 |
Страница 1 из 1 |
Автор: | a.lebedev [ 22 июл 2013, 22:43 ] |
Заголовок сообщения: | Ошибка при проверке сертификата |
Да, таких тем уже было. Все перечитал, все перепробовал. Без результата. Ситуация - Требуется настроить авторизацию по сертификату. Имеется настроенный https и соответствующий .keystore. От поставщика ОСМП получен CSR запрос. Делаю (это кратчайший путь): 1. Экспортирую сертификат сервера Код: # keytool -exportcert -keystore .keystore -alias bgbilling -outfile bgbilling.cert 2. Подписываю запрос своим секретным ключом (была тема как его достать с помощью java-кода, но в новой версии keytool есть способ проще) Код: # keytool -gencert -keystore .keystore -alias bgbilling -infile osmp.csr -outfile osmp.cert Полученные сертификаты bgbilling.cert и osmp.cert отправляю в контору. 3. С сертификата osmp.cert делаю открытый ключ Код: # openssl x509 -inform der -in osmp.cert -pubkey -out osmp.pem > osmp.pub В файле osmp.pub получается открытый ключ, который переношу в конфиг модуля mps (все строчки между «-----BEGIN PUBLIC KEY-----» и «-----END PUBLIC KEY-----» склеиваю в одну) (кстати, запросил в организации открытый ключ, он точно такой же, как и сгенерированный) Код: mps.1.cert=1 mps.1.pem=MIIBIjANBgkqhkiG9…… YwIDAQAB В результате в логах ошибка: Код: MPSPaymentManager - MPSPaymentManager getInstance. Ошибка получения(сравнения) открытого ключа у клиентского сертификата службы платежей. Возможно в конфиге не указан открытый ключ ……дальше NullPointerException и дамп стэка…… MPSExecuter - MPSExecuter. Authentication error of payment system [remoteAddr=192.168.x.x, authType=null]. Клиентский открытый ключ не совпадает с необходимым А можно где-то/как-то узнать какой он получил клиентский ключ и с чем он его сравнивает? Уровень логов уже поднял до DEBUG, но не помогло. Кроме этого способа я пробовал сам генерировать секретный ключ, формировать запрос на подпись, ответ, пакет pkcs12, импортировать его в браузер и формировать запрос к mps. При запросе браузер запросил полученный сертификат, пароль... Но... Результат аналогичный. Пробовал генерить новую пару ключей mps.key\pub специально для модуля mps и подписывать ими - не помогает. Импортирование полученных клиентских сертификатов в .keystore тоже ничего не даёт (да и, насколько я помню, Amir писал, что они берутся из конфига). А ещё почему-то постоянно запрашивается пароль! В конфиге указано: Код: mps.comment=$CONTRACT ($COMMENT) mps.1.mode=1 mps.1.title=ОСМП mps.1.protocol=osmp mps.1.protocol.ext=noBaseAuth #mps.1.login=osmp #mps.1.passw=osmp mps.1.pid=5 mps.1.search.mode=contract mps.1.numberPattern=\A\d{5}\z mps.1.cert=1 mps.1.pem=MIIBIjANBgk…oYwIDAQAB При этом при попытке проведения операции модуль требует логин и пароль. Комментарии на строчках mps.1.login и mps.1.passw никакого влияния не оказывают, всё равно запрашивается. А если закомментировать ещё и строчку «mps.1.protocol.ext», то пароль не запрашивается, но в логах исчезают ошибки «получения(сравнения) открытого ключа», на запросы в логах появляются ошибки java.lang.NullPointerException и модуль всё равно никак не отвечает. |
Автор: | skn [ 22 июл 2013, 22:59 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
не коментируйте логин и пароль, просто оставте пустыми |
Автор: | Phricker [ 22 июл 2013, 23:17 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
skn писал(а): не коментируйте логин и пароль, просто оставте пустыми А не Код: #Отключение Base-аутентификации #mps.1.protocol.ext=noBaseAuth ? |
Автор: | a.lebedev [ 23 июл 2013, 11:12 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
skn писал(а): не коментируйте логин и пароль, просто оставте пустыми И так тоже пробовал... Логин не запрашивается только если закоментировать все три строки. Код: #mps.1.protocol.ext=
#mps.1.login= #mps.1.passw= |
Автор: | skn [ 23 июл 2013, 12:41 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
а с реальной системой проверяли? |
Автор: | a.lebedev [ 23 июл 2013, 13:01 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
skn писал(а): а с реальной системой проверяли? Да. Аналогично. И реальной системе не понравилось, что запрашивается логин и пароль. |
Автор: | skn [ 23 июл 2013, 13:03 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
a.lebedev писал(а): skn писал(а): не коментируйте логин и пароль, просто оставте пустыми И так тоже пробовал... Логин не запрашивается только если закоментировать все три строки. Код: #mps.1.protocol.ext= #mps.1.login= #mps.1.passw= не запрашивается потому что программа падает раньше... ![]() логин и пароль запрашиваются всегда, но дальше не проверяются |
Автор: | a.lebedev [ 23 июл 2013, 13:11 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
skn писал(а): a.lebedev писал(а): skn писал(а): не коментируйте логин и пароль, просто оставте пустыми И так тоже пробовал... Логин не запрашивается только если закоментировать все три строки. Код: #mps.1.protocol.ext= #mps.1.login= #mps.1.passw= не запрашивается потому что программа падает раньше... ![]() логин и пароль запрашиваются всегда, но дальше не проверяются Реальной системе не нравится, что запрашивается логин и пароль. Им без разницы, что он не проверяется, они не собираются его предъявлять. Есть возможность отключить запрос логина и пароля? |
Автор: | stark [ 23 июл 2013, 13:14 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
skn писал(а): не запрашивается потому что программа падает раньше... ![]() Вы бы хоть ошибку со стеком выложили чтоли на всякий случай |
Автор: | a.lebedev [ 23 июл 2013, 13:24 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
Это если строк mps.1.protocol.ext, mps.1.login, mps.1.passw нет. Код: 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - java.lang.NullPointerException
07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at bitel.billing.server.mps.bean.MPSPaymentManager.processRequest(MPSPaymentManager.java:328) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at bitel.billing.server.mps.MPSExecuter.doPost(MPSExecuter.java:102) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at bitel.billing.server.mps.MPSExecuter.doGet(MPSExecuter.java:43) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at java.lang.Thread.run(Thread.java:662) |
Автор: | skn [ 23 июл 2013, 13:41 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
a.lebedev писал(а): Это если строк mps.1.protocol.ext, mps.1.login, mps.1.passw нет. Код: 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - java.lang.NullPointerException 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at bitel.billing.server.mps.bean.MPSPaymentManager.processRequest(MPSPaymentManager.java:328) 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at bitel.billing.server.mps.MPSExecuter.doPost(MPSExecuter.java:102) Код: if( system.protocol.isAuthBySign() || system.extNoBaseAuth || (system.login.equals( userName ) && system.password.equals( userPswd )) ) упало так как не указан NoBaseAuth и не указаны логин и пароль mps.1.protocol=osmp - этот протокол не поддерживает подписи сертификатом |
Автор: | a.lebedev [ 23 июл 2013, 13:50 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
То есть никакого способа заставить не запрашивать логин и пароль нет. Я правильно понял? А как узнать почему сертификаты не совпали? Какой именно получен клиентский ключ и с чем именно он его сравнивает? У меня в эксплорере есть только один сертификат. И именно его открытый ключ указан в конфиге модуля. Как они могут не совпасть? |
Автор: | a.lebedev [ 23 июл 2013, 13:54 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
skn писал(а): mps.1.protocol=osmp - этот протокол не поддерживает подписи сертификатом Ой! Да? Как так не поддерживает? А как же её все настраивают? А зачем тогда mps.1.cert=1? |
Автор: | snark [ 23 июл 2013, 15:34 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
skn писал(а): mps.1.protocol=osmp - этот протокол не поддерживает подписи сертификатом Нет же! Когда с киви тестили - все работало так: Код: mps.2.mode=1
mps.2.title=QIWI mps.2.protocol=osmp mps.2.pid=6 mps.2.search.mode=contract mps.2.cert=1 mps.2.cert.pem=potatoes+gonna+potate mps.2.protocol.ext=noBaseAuth mps.2.numberPattern=^foo\d{4}$|^bar\d{4}$ |
Автор: | skn [ 23 июл 2013, 16:01 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
есть код Код: if( system.protocol.isAuthBySign() || system.extNoBaseAuth || (system.login.equals( userName ) && system.password.equals( userPswd )) ) при установке Код: mps.1.protocol=osmp system.protocol.isAuthBySign() будет false дальше проверяется Код: mps.1.protocol.ext=noBaseAuth если параметр не задан или в нем нет noBaseAuth system.extNoBaseAuth будет false если в конфиге не заданы параметры Код: mps.1.login=osmp mps.1.passw=osmp system.login и system.password будут null и в результате Код: 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - java.lang.NullPointerException 07-23/10:19:27 ERROR ["http-bio-/0.0.0.0-8443"-exec-9] LoggingPrintStream - at bitel.billing.server.mps.bean.MPSPaymentManager.processRequest(MPSPaymentManager.java:328) а все потому что первые реализации протокола были без сертификатов в связи с чем Код: mps.1.protocol=osmp не предусматривает авторизацию по ключупараметр Код: mps.1.cert=1 был добавлен позже и он не отменяет первоначальную логику работы по логину и паролю, а дополняет ее проверкой по ключу |
Автор: | a.lebedev [ 23 июл 2013, 19:21 ] |
Заголовок сообщения: | Re: Ошибка при проверке сертификата |
Всё. Спасибо всем! Итог - сам дурак, внимательнее надо быть. Неправильно обозвал параметр в котором прописан открытый ключ. Сегодняшнее обновление здорово помогло разобраться в ситуации. И кстати, после сегодняшнего обновления браузер больше не запрашивает пароль при mps.1.protocol.ext=noBaseAuth. Вобщем ценное обновление. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |