BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 05 июн 2024, 12:25

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 26 ] 
Автор Сообщение
СообщениеДобавлено: 04 сен 2009, 19:09 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
Уважаемый коллеги подскажите пожалуйста, что нужно указывать в параметрах
mps.1.cert.mod=??? откуда эта штука берется ???
mps.1.cert.exp= эта штука всегда равна 10001 ??? У меня например при генерации ключа показало что е=0x10001 это получается в шестнадцатеричном коде здесь надо указывать этот параметр.

Когда в mod кидаю содержимое файла pem он матюкается.
Когда в pem кидаю содержимое файла pem он тоже матюкается. Кидаю как написано только само тело без заголовка и конца. В одну строку.
Кроме того этот pem взял и добавил в keystore на всякий пожарный. Один черт матюкается.
Сертификаты генерил как описано тута: http://bgbilling.ru/v4.6/doc/ch17s03.html
Сначала поднял https для него свой сертификат bgbilling alias.
1. Потом сгенерил ключ
openssl genrsa -des3 -out mps.key 1024
2. Потом главный сертификат для модуля
openssl req -new -x509 -days 1001 -key mps.key -out mps.pem
3. Добавил в доверенные
keytool -keystore .keystore -alias mps -importcert -file mps.pem
4. Потом сгенерил ключ для ОСМП
openssl genrsa -des3 -out osmp.key 1024
5. Потом генерю запрос на подпись
openssl req -new -key osmp.key -out osmp.csr
6. Создаем подписанный сертификат.
openssl x509 -req -in osmp.csr -CA mps.pem -CAkey mps.key -out osmp.pem -days 1001 -CAcreateserial -CAserial mps.seq
После чего из osmp.pem создал pkcs12 сертификат его отправил в ОСМП в качестве клиенсткого, в качестве серверного дал им mps.pem.OSMP все это съел.
Добавил в доверенные osmp.pem. также через keytool.
в конфиг модуля кинул mps.1.cert.pem= в одну строку содержимое pem без заголовка и конца.
В результате в логах
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: Objec
tIdentifier() -- data isn't an object ID (tag = 2)

Кстати чисто через логин и пароль все успешно. То бишь проблема чисто в сертификатах гдето. Может мне подписывать клиентский сертификат надо было не mps.key а bgbilling сертификатом который я ранее создал при подъеме https ???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 сен 2009, 19:33 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Цитата:
mps.1.cert.mod=??? откуда эта штука берется ???
mps.1.cert.exp=

это старый вариант. Может быть или mod+exp или enc или pem.

Ошибку полностью выложите
Цитата:
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: Objec
tIdentifier() -- data isn't an object ID (tag = 2)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 сен 2009, 20:35 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: ObjectIdentifier() -- data isn't an object ID (tag = 2)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:188)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at java.security.KeyFactory.generatePublic(KeyFactory.java:304)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at bitel.billing.server.mps.bean.Conf$MPSSystem.<init>(Conf.java:271)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at bitel.billing.server.mps.bean.Conf.<init>(Conf.java:395)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
0.security.InvalidKeyException: IOException: Objec
tIdentifier() -- data isn't an object ID (tag = 2)
9-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at ru.bitel.bgbilling.server.util.Setup.getConfig(Setup.java:146)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at bitel.billing.server.mps.bean.MPSPaymentManager.processRequest(MPSPaymentManager.java:288)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at bitel.billing.server.mps.MPSExecuter.doPost(MPSExecuter.java:114)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at bitel.billing.server.mps.MPSExecuter.doGet(MPSExecuter.java:55)
qq
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:37)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at java.lang.Thread.run(Thread.java:619)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - Caused by: java.security.InvalidKeyException: IOException: ObjectIdentifier() -- data isn't an object ID (tag = 2)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at sun.security.x509.X509Key.decode(X509Key.java:380)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at sun.security.x509.X509Key.decode(X509Key.java:386)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at sun.security.rsa.RSAPublicKeyImpl.<init>(RSAPublicKeyImpl.java:66)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at sun.security.rsa.RSAKeyFactory.generatePublic(RSAKeyFactory.java:281)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:184)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - ... 29 more
09-04/02:02:05 ERROR [http-8443-2] server - Ошибка в конфиге mps.1, mid=8
09-04/02:02:05 ERROR [http-8443-2] server - MPSPaymentManager getInstance. Ошибка получения(сравнения) открытого ключа у клиентского сертификата службы платежей. Возможно в конфиге не указан открытый ключ
09-04/02:02:05 ERROR [http-8443-4] server - MPSPaymentManager getInstance. Ошибка получения(сравнения) открытого ключа у клиентского сертификата службы платежей. Возможно в конфиге не указан открытый ключ
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - java.lang.NullPointerException
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at bitel.billing.server.mps.bean.MPSPaymentManager.processRequest(MPSPaymentManager.java:383)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at bitel.billing.server.mps.MPSExecuter.doPost(MPSExecuter.java:114)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at bitel.billing.server.mps.MPSExecuter.doGet(MPSExecuter.java:55)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:37)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
09-04/02:02:05 ERROR [http-8443-2] LoggingPrintStream - at java.lang.Thread.run(Thread.java:619)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 сен 2009, 13:02 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
Amir писал(а):
это старый вариант. Может быть или mod+exp или enc или pem.

Я понимаю, что сейчас возможно 3 вариантами ключ указать. Вы пожалуйста ответьте на вопросы:
Что туда подставлять ???
Откуда эти данные я должен взять?
И ещё должен ли я клиентский сертификат закинуть в keystore ??? или достаточно того что я запихал его в конфиг модуля?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 сен 2009, 13:08 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Добавлять в keystore не обязательно, достаточно этого пункта
3. Добавил в доверенные
keytool -keystore .keystore -alias mps -importcert -file mps.pem

Надо в pem содержимое pem файла. Точно не опечатались и не удалили лишний символ из последовательности?
Похоже падает именно на попытке распарсить значение .pem.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 сен 2009, 15:23 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
Указываю все верно. Проверил ещё раз. Теперь вопрос такой, все таки как черещ mod+exp мне дать ключ. И ещё, при генерации я домены правильно не указывал забил на этот момент, может ли не работать из за этого ???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 сен 2009, 15:25 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
#вкл/выкл - 1/0
mps.1.mode=1
#Название патежной системы
mps.1.title=OSMP
#Используемый протокол
mps.1.protocol=osmp
#логин пароль для аутентификации системы платежей. должны различаться для систем
mps.1.login=111
mps.1.passw=111
#разница во времени в минутах между сервером биллинга и системой платежей (например система работает по московскому времени, биллинг
#по уфимскому +2 часа - 180)
#mps.1.timeoffset=
#допустимая разница во времени между временем платежа и временем биллинга, т.е сначала высчитывается время платежа через timeoffset, ]
#затем время сверяется по параметру paytime, например timeoffset=180, paytime=600, время биллинга 20:00, пришедшее время платежа: 09:00-платеж не пройдет
#mps.1.paytime=
#id нередактируемого типа платежа
mps.1.pid=8
#тип поиска. В CyberPlat возможно использование несколько типов поисков (type>0; например по логину DialUp или Voice)
#а основной набор терминалов оплаты - цифровой, т.е буквы набрать на них набрать нельзя
#Если будет использоваться такой тип поиска то необходимо его согласовать с CyberPlat и конфиг может быть таким:
#поиск по логину DialUp (или Voip)
mps.1.search.mode=login
#id модуля
mps.1.search.mid=1
#поиск по номеру телефона модуля Voice
#mps.1.search.2.mode=voice
#mps.1.search.2.mid=4
#рекомендуемый же тип поиска - логин модуля mps (уникальное для модуля целое положительное число, которое клиент
#может сам выбрать у себя на странице web статистики - для этого у него должна быть добавлена услуга этого модуля)
#mps.1.search.mode=mps_login
#проверка сертификата (очень рекомендуется)
#вкл/выкл - 1/0
mps.1.cert=1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 сен 2009, 16:15 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
В доке неправильно написано было
Цитата:
При необходимости можно сконвертировать сертификат в текстовый формат:
openssl x509 -inform der -in osmp.cer -out osmp.pem

Нужно выполнить
openssl x509 -inform der -in osmp.cer -pubkey
или для pem формата
openssl x509 -inform pem -in osmp.pem -pubkey

и взять значение из
-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 сен 2009, 15:26 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
Спасибо проблема решена.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 дек 2009, 12:08 
Не в сети

Зарегистрирован: 15 дек 2009, 11:51
Сообщения: 40
Карма: 0
Добрый день. Перечитал весь форум и решил написать в этой ветке ОСМП.
Начинаю стыковаться с платежами ОСМП.
1) с помощью утилиты create_server_selfsigned_createselfsigned.sh создал сертификат
получил 3 файла
.keystore
KomTV Ltd._KhsdBL_JKQVywtrnCHogICjmMEmHyZ0RLJbrNyX.keystore
KomTV Ltd._KhsdBL_JKQVywtrnCHogICjmMEmHyZ0RLJbrNyX.p12
2) сгенерил клиентские сертификаты с помощью create_client.bat
получил 3 файла
.keystore.cer
KomTV Ltd._XNP94K_Ebfw2beFtTfhzlNGPLFwoDCLxvuKwe1X.p12
KomTV Ltd._XNP94K_Ebfw2beFtTfhzlNGPLFwoDCLxvuKwe1X.txt
3) по инструкции прописал
mps.1.cert=1
mps.1.cert.pem - взял из openssl x509 -inform pem -in osmp.pem -pubkey
mps.1.cert.mod=взял из файла KomTV Ltd._XNP94K_Ebfw2beFtTfhzlNGPLFwoDCLxvuKwe1X.txt
mps.1.cert.exp= 10001
4) на виндовой машине импортировал сертификат
KomTV Ltd._XNP94K_Ebfw2beFtTfhzlNGPLFwoDCLxvuKwe1X.p12 указав при этом соответственно пароль XNP94K
5) теперь браузером иду на https://x.x.x.x:8443/bgbilling/mpsexecu ... 1&sum=1.00
и получаю запрос на ввод login и password!!!
Откуда? Подскажите пожалуйста, ведь у меня отключена аутентификация!!
В конфиге прописано mps.1.protocol.ext=noBaseAuth
Подскажите пожалуйста, что не так. Всю голову сломал уже.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 дек 2009, 14:53 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Какая версия? Что в server.log|server.out?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 дек 2009, 15:16 
Не в сети

Зарегистрирован: 15 дек 2009, 11:51
Сообщения: 40
Карма: 0
версия - 4.6
bill вер. 4.6 сборка 201 от 17.07.2009 11:40:15
mps вер. 4.6 сборка 175 от 24.09.2009 13:14:59
в логах
1) server.log

12-15/18:49:55 WARN [http-8443-6] server - MPSExecuter. Authentication error of payment system [remoteAddr=10.10.0.15, authType=null]. ??? ??????????? ????????? ?????????? ??????????

2) server.out

[root@billing /usr/local/BGBillingServer]# cat log/server.out
Dec 15, 2009 3:32:33 PM org.apache.catalina.startup.Embedded start
INFO: Starting tomcat server
Dec 15, 2009 3:32:33 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.18
Dec 15, 2009 3:32:33 PM org.apache.catalina.startup.ContextConfig defaultWebConfig
INFO: No default web.xml
Dec 15, 2009 3:32:33 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Dec 15, 2009 3:32:33 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Dec 15, 2009 3:32:34 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8443
Dec 15, 2009 3:32:34 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8443


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 дек 2009, 19:32 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Судя по количеству вопросиков нет сертификата - либо сертификат в браузер не импортировался, либо .keystore в биллинге другой, с другим сертификатом.

Можете попробовать сгенерировать по новой документации, но там openssl нужен.
http://www.bgbilling.ru/v5.0/doc/ch17s03.html
http://www.bgbilling.ru/v5.0/doc/ch01s14.html


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 дек 2009, 20:44 
Не в сети

Зарегистрирован: 15 дек 2009, 11:51
Сообщения: 40
Карма: 0
Ладно. Давайте попорядку, если никто не против. :)
Все что я делал согласно вашего "фэн-шуя".
1) у меня биллинг работает на FreeBSD
[root@billing /usr/local/BGBillingServer]# uname -a
FreeBSD billing 7.0-RELEASE-p12 FreeBSD 7.0-RELEASE-p12 #0: Sat Jul 18 10:20:32 UTC 2009 admin@billing:/usr/src/sys/i386/compile/my_kernel_10 i386
[root@billing /usr/local/BGBillingServer]#
Информация по самому биллингу - писал выше.
2) папка где установлен биллинг вот эта
/usr/local/BGBillingServer
3) естественно поначалу у меня нет в /usr/local/BGBillingServer никакого .keystore
[root@billing /usr/local/BGBillingServer]# ls -al | grep .keystore
[root@billing /usr/local/BGBillingServer]#
3) начинаем вот отсюда http://www.bgbilling.ru/v5.0/doc/ch01s14.html
Подготавливаем хранилище для работы.
Заряжаем:
[root@billing /usr/local/BGBillingServer]# keytool -genkey -alias bgbilling -keyalg RSA -keystore .keystore
Enter keystore password:тут вбиваем пароль на хранилище (рекомендуется bgbilling, собственно я его и вбивал)
Re-enter new password:повтор пароля
What is your first and last name?
[Unknown]: http://www.yourcompanyname.ru
What is the name of your organizational unit?
[Unknown]: ISP
What is the name of your organization?
[Unknown]: CompanyName
What is the name of your City or Locality?
[Unknown]: Muhosransk
What is the name of your State or Province?
[Unknown]: Muhosransk Region
What is the two-letter country code for this unit?
[Unknown]: RU
Is CN=www.yourcompanyname.ru, OU=ISP, O=CompanyName, L=Muhosransk, ST=Muhosransk Region, C=RU correct?
[no]: yes

Enter key password for <bgbilling>
(RETURN if same as keystore password): еще раз вбил bgbilling
Re-enter new password:и еще раз bgbilling
[root@billing /usr/local/BGBillingServer]#
У нас появился файлик .keystore. Собственно вот:
[root@billing /usr/local/BGBillingServer]# ls | grep .keystore
.keystore
[root@billing /usr/local/BGBillingServer]#
Теперь можно даже просмотреть содержимое хранилища вот так
[root@billing /usr/local/BGBillingServer]# keytool -keystore .keystore -list
Enter keystore password:тут вколачиваем опять bgbilling

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

bgbilling, 16.12.2009, PrivateKeyEntry,
Certificate fingerprint (MD5): 30:4C:3E:70:41:42:64:DC:32:C4:24:94:E5:96:0E:99
[root@billing /usr/local/BGBillingServer]#
4) Теперь по фэншую доков надо экспортировать серверный сертификат для того, чтобы удаленная сторона могла его добавить в доверенные. Это делаем так:
[root@billing /usr/local/BGBillingServer]# keytool -keystore .keystore -alias bgbilling -exportcert -file yourcompany.cer
Enter keystore password:тут опять вколачиваем пароль на хранилище (bgbilling)
Certificate stored in file <yourcompany.cer>
[root@billing /usr/local/BGBillingServer]#
Получили файл с экспортированным сертификатом yourcompany.cer. Который является самоподписанным(поправьте меня если не так).
5) Теперь нам нужно подписать CSR-запрос, присланный от системы платежей. Это делаем в несколько подэтапов
5.1) Генерируем ключ, который будет зашифрован паролем
[root@billing /usr/local/BGBillingServer]# openssl genrsa -des3 -out mps.key 1024
Generating RSA private key, 1024 bit long modulus
....++++++
................++++++
e is 65537 (0x10001)
Enter pass phrase for mps.key:сюда вколачиваем секретный пароль (к примеру popa)
Verifying - Enter pass phrase for mps.key:тот же пароль еще раз (popa)
[root@billing /usr/local/BGBillingServer]#
получили ключ mps.key
5.2) Создаем на основе ключа сертификат
[root@billing /usr/local/BGBillingServer]# openssl req -new -x509 -days 1200 -key mps.key -out mps.pem
Enter pass phrase for mps.key:здесь вклачиваем popa (пароль на секретный ключ)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Muhosransk Region
Locality Name (eg, city) []:Muhosransk
Organization Name (eg, company) [Internet Widgits Pty Ltd]:CompanyName Ltd.
Organizational Unit Name (eg, section) []:ISP
Common Name (eg, YOUR name) []:www.yourcompanyame.ru
Email Address []:support@yourcompanyname.ru
[root@billing /usr/local/BGBillingServer]#
получили файлик - mps.pem
5.3) Добавляем полученный сертификат в доверенные вот так
[root@billing /usr/local/BGBillingServer]# keytool -keystore .keystore -alias osmp -importcert -file mps.pem
Enter keystore password:
Owner: EMAILADDRESS=techsupport@yorcompanyname.ru, CN=www.yourcompanyname.ru, OU=ISP, O=CompanyName Ltd., L=Muhosransk, ST=Muhosransk Region, C=RU
Issuer: EMAILADDRESS=techsupport@yorcompanyname.ru, CN=www.yourcompanyname.ru, OU=ISP, O=CompanyName Ltd., L=, ST=Muhosransk Region, C=RU
Serial number: d32c95fa6f50d5c8
Valid from: Wed Dec 16 00:25:38 2009 until: Sat Mar 30 00:25:38 2013
Certificate fingerprints:
MD5: 02:94:D3:91:0A:98:39:53:AD:83:7E:F6:29:82:F2:CD
SHA1: EE:96:16:BE:99:F3:E0:2D:77:08:CF:3F:D5:D8:C0:69:0F:75:50:11
Signature algorithm name: SHA1withRSA
Version: 3

Extensions:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 03 97 C4 4E 0D 10 84 3D C2 D8 94 BE 5A 9A AB 87 ...N...=....Z...
0010: 13 CF 4C B3 ..L.
]
]

#2: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
CA:true
PathLen:2147483647
]

#3: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 03 97 C4 4E 0D 10 84 3D C2 D8 94 BE 5A 9A AB 87 ...N...=....Z...
0010: 13 CF 4C B3 ..L.
]

[EMAILADDRESS=techsupport@yorcompanyname.ru, CN=www.yorcompanyname.biz, OU=ISP, O=CompanyName Ltd., L=Muhosransk, ST=MuhosranskRegion, C=RU]
SerialNumber: [ d32c95fa 6f50d5c8]
]

Trust this certificate? [no]: y
Certificate was added to keystore
[root@billing /usr/local/BGBillingServer]#
Получили то, что самоподписанный сертификат находится в хранилище, просмотреть так:
[root@billing /usr/local/BGBillingServer]# keytool -keystore .keystore -list
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 2 entries

bgbilling, 16.12.2009, PrivateKeyEntry,
Certificate fingerprint (MD5): 30:4C:3E:70:41:42:64:DC:32:C4:24:94:E5:96:0E:99
osmp, 16.12.2009, trustedCertEntry,
Certificate fingerprint (MD5): 02:94:D3:91:0A:98:39:53:AD:83:7E:F6:29:82:F2:CD

[root@billing /usr/local/BGBillingServer]#
6) Теперь в моем случае надо подписать CSR-запрос, который мне прислали из ОСМП.
Делаем так:
[root@billing /usr/local/BGBillingServer]# openssl x509 -req -in yourcompanyname_cert.req -CA mps.pem -CAkey mps.key -out osmp.pem -days 1200 -CAcreateserial -CAserial mps.seq
Signature ok
subject=/C=RU/ST=Moscow/L=Moscow/O=Ciberpay/OU=IT Dept/CN=yourcompanyname Ciberpay/emailAddress=support@ciberpay.ru
Getting CA Private Key
Enter pass phrase for mps.key:тут вколачиваем пароль на ключ (в примере был popa)
[root@billing /usr/local/BGBillingServer]#
на выходе получили файл osmp.pem-подписанный сертификат из запроса от ОСМП, который по фэншую доков надо отправить в ciberpay (читал вот тут http://www.bgbilling.ru/v4.6/doc/ch17s03.html)

На этом действия по работе с сертификатами в моем случае закончились.
И теперь, глубокоуважаемые разработчики, подскажите - что мне прописать в нофиге модуля, чтобы у меня заработали платежи на основе всего вышесозданного. В голове уже каша, надеюсь на понимание и помощь. Хоть мануал толковый на живом примере получится. Заранее спасибо.


Последний раз редактировалось Orlov 16 дек 2009, 09:17, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 дек 2009, 09:06 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Тему читал по-диагонали. Просто кину сюда мануал, сделанный для себя после настройки osmp в биллинге - может пригодится:

Читаем bgbilling.ru

В файле /usr/local/BGBillingServer/.keystore хранятся закрытые ключи и сертификаты, используемые биллингом. Тулза для работы с keystore называется keytool Пароль от keystore - bgbilling Из keystore можно извлечь сертификаты:

Код:
keytool -keystore /usr/local/BGBillingServer/.keystore -export -alias tomcat -rfc -file tomcat.pem


С алиасом tomcat хранится закрытый ключ сервера. При экспорте же мы получаем сертификат сервера, закрытый ключ с помощью keytool извлечь нельзя. Извлечь private key можно например так: берем файлик DumpPrivateKey.java (см код ниже), компилируем его:

Код:
javac DumpPrivateKey.java


Запускаем:

Код:
java -cp . DumpPrivateKey > tomcat.pkcs8


На выходе имеем tomcat.pkcs8 Конвертируем его в base64:

Код:
(echo "-----BEGIN PRIVATE KEY-----";openssl enc -in tomcat.pkcs8 -a;echo "-----END PRIVATE KEY-----")>tomcat.b64


теперь можно пропустить пункт в доке биллинга про генерацию ключа и сертификата сервера: вместо mps.pem в доке используем экспортированный tomcat.pem, вместо mps.key - tomcat.b64 Например, создаем клиентский сертификат для osmp:

Код:
#генерируем ключ для клиентского сертификата:
openssl genrsa -des3 -out osmp.key 1024
#создаем CSR - запрос на подпись сертификата
openssl req -new -key osmp.key -out osmp.csr
#подписываем csr своим закрытым ключом:
openssl x509 -req -in osmp.csr -CA tomcat.pem -CAkey tomcat.b64 -out osmp.pem -days 1001 -CAcreateserial
#osmp нужен клиентский сертификат в формате pkcs12:
openssl pkcs12 -export -in osmp.pem -inkey osmp.key -certfile tomcat.pem -name "OSMP" -out osmp.p12


При создании клиентского сертификата в последней комманде указывается пароль - именно его нужно передать в osmp. В osmp отправляются: серверный сертификат tomcat.pem и клиентский сертификат osmp.p12, а также пароль для клиентского сертификата.

!!! Ни в коем случае не отправляется tomcat.pkcs8 или tomcat.b64 - это наш закрытый ключ! После подписи клиентского сертификата эти файлы должны быть удалены.

зы. DumpPrivateKey.java :

Код:
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.Key;
 
public class DumpPrivateKey {
   static public void main(String[] args) {
      try {
         KeyStore ks = KeyStore.getInstance("jks");
         ks.load(new FileInputStream("/usr/local/BGBillingServer/.keystore"),"bgbilling".toCharArray());
         Key key = ks.getKey("tomcat","bgbilling".toCharArray());
         System.out.write(key.getEncoded());
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 дек 2009, 09:12 
Не в сети

Зарегистрирован: 15 дек 2009, 11:51
Сообщения: 40
Карма: 0
Не, круто,конечно, выучить еще и java... :)
Но вы не находите, что как-то вообще все замороченно получается.
Не, ждем ответа разработчиков.


Последний раз редактировалось Orlov 16 дек 2009, 09:36, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 дек 2009, 09:15 
Не в сети

Зарегистрирован: 15 дек 2009, 11:51
Сообщения: 40
Карма: 0
Продолжу свой вопрос:
После всех действий, которые я осуществил выше у меня есть в наличии следующие файлы (поправьте меня, если я что-то неправильно распишу):
1) /usr/local/BGBillingServer/.keystore - хранилище сертификатов с секретным ключом и с сертификатами
2) /usr/local/BGBillingServer/yourcompanyname_cert.req - CSR-запрос от ОСМП
3) /usr/local/BGBillingServer/yourcompanyname.cer - экспортированный из хранилища /usr/local/BGBillingServer/.keystore, самоподписанный сертфиикат
4) /usr/local/BGBillingServer/mps.key - сгенерированный нами ключ
5) /usr/local/BGBillingServer/mps.pem - созданный на основе mps.key сертификат, который мы добавили в хранилище .keystore
6) /usr/local/BGBillingServer/mps.seq появился в процессе создания mps.pem, я честно не знаю что это такое и для чего это нужно.
7) /usr/local/BGBillingServer/osmp.pem - подписанный сертификат, полученный из CSR-запроса /usr/local/BGBillingServer/yourcompany_cert.req
Теперь осталось совсем чуть-чуть, надо в конфиге модуля указать
1)mps.1.cert
2)mps.1.cert.pem
3) И что-то отправить в осмп.
Так, ну про mps.1.cert - понятно, включаем проверку сертификата
mps.1.cert=1
Я вытащил public key из /usr/local/BGBillingServer/mps.pem используя команду
openssl x509 -inform pem -in mps.pem -pubkey. В выводе это команды взял все, что между BEGIN PUBLIC KEY и END PUBLIC KEY. И затем вставил этот ключ в mps.1.cert.pem.
Судя по докам параметр mps.1.cert.exp можно вообще закоментировать. (опять, разработчики, поправьте, если это не так!!!)
После этого я сконвертировал в pkcs12-формат файл сертификата mps.pem командой
openssl pkcs12 -export -in mps.pem -inkey mps.key -out osmp.p12
После этого добавил на рабочей станции osmp.p12 в доверенные и пошел по тестовой ссылке https://x.x.x.x:8443/bgbilling/mpsexecu ... 1&sum=1.00 проверять работу платежной системы, вот так . И получаю запрос на ввод логина и пароля!!! При этом mps.1.protocol.ext=noBaseAuth!!! Почему?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 дек 2009, 14:23 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Вы не сможете проверить с помощью IE, так как у вас нет закрытого ключа - вы подписывали запрос.
Запрос содержит только открытый ключ, который вы подписываете своим закрытым mps.key.

Цитата:
После этого я сконвертировал в pkcs12-формат файл сертификата mps.pem командой
openssl pkcs12 -export -in mps.pem -inkey mps.key -out osmp.p12

Этого не нужно, mps.key mps.pem mps.seq должны оставаться только у вас.
mps.seq - это счетчик - для каждого нового созданного/подписанного клиентского сертификата он будет увеличиваться. Его значение храниться в сертификате.

Для платежной системы нужны только yourcompanyname.cer и оsmp.pem

Чтобы проверить - нужен закрытый ключ, для этого придется генерить новый ключ, а не подписывать запрос на подпись.

Не дает зайти потому что в конфиге прописан ключ osmp.pem
А вы пытаетесь подключиться с ключем mps.pem

mps.key mps.pem - это промежуточный сертификат для подписывания.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 дек 2009, 08:58 
Не в сети

Зарегистрирован: 15 дек 2009, 11:51
Сообщения: 40
Карма: 0
ПОДРОБНАЯ ИНСТРУКЦИЯ ПО ПОДПИСЫВАНИЮ СЕРТИФИКАТА ДЛЯ ПЛАТЕЖНОЙ СИСТЕМЫ
Вообщем заработало.
Опишу подробно как все сделал.
Начну с того, что в моем случае мне прислали CSR-запрос на подпись(мне прислали файл mycompanyname.req), поэтому распишу то, как я его подписывал. Случай с созданием самоподписанного сертификата очень хорошо расписан в документации вот здесь.http://www.bgbilling.ru/v4.6/doc/ch17s03.html
В принципе там описан и случай с подписанием CSR-запроса. Ну-да ладно, я посчитал нужным отписаться о результатах ибо меня самого бесит то, когда на технических форумах задают вопрос, потом пишут - "ПРОБЛЕМА РЕШЕНА", а это драгоценное для кого-то РЕШЕНИЕ не удосуживаются выложить.
Приступим.
1) Начну с того, что у меня BGBilling работает на FeeBSD
[root@billing /]# uname -a
FreeBSD billing 7.0-RELEASE-p12 FreeBSD 7.0-RELEASE-p12 #0: Sat Jul 18 10:20:32 UTC 2009 admin@billing:/usr/src/sys/i386/compile/my_kernel_10 i386
[root@billing /]#
2) Сам BGBilling установлен здесь /usr/local/BGBillingServer/
3) Создаем хранилище сертификатов
[root@billing /]# cd /usr/local/BGBillingServer/
[root@billing /usr/local/BGBillingServer]#keytool -genkey -alias bgbilling -keyalg RSA -keystore .keystore
После ввода этой команды у нас спросят пароль на хранилище, которое мы создаем. Следует помнить, что BGBilling по умолчанию будет лезть в хранилище с паролем "bgbilling", поэтому для начала просто задайте пароль на хранилище "bgbilling". Потом уже можно поизвращаться со своим паролем(другим), но тогда в конфиге BGBilling надо будет прописать этот пароль. Как прописать - где-то в документации видел или на форуме. Не могу сейчас вспомнить где (может разработчики откомментируют мой пост и ткнут где).
После ввода пароля на хранилице у нас будут спрашивать различные вопросы, смысл которых впринципе понятен. Там вводим информацию о нашей организации.
Получили файл хранилища /usr/local/BGBillingServer/.keystore
Просмотреть содержимое хранилища можно так
[root@billing /usr/local/BGBillingServer]# keytool -keystore .keystore -list
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entries

bgbilling, Dec 16, 2009, PrivateKeyEntry,
Certificate fingerprint (MD5): 11:5E:97:2C:EF:28:E9:B8:34:55:4E:47:C2:7B:AE:A8
4) Теперь экспортируем серверный сертфикат из хранилища, чтобы удаленная сторона могла добавить его в доверенные
keytool -keystore .keystore -alias bgbilling -exportcert -file mycompanyname.cer
После ввода этой команды нас попросят ввести пароль на хранилище (вводим "bgbilling")
На выходе получили файл /usr/local/BGBillingServer/mycompanyname.cer
5) Если вдруг потребуется, то можно сконвертировать этот серверный сертификатв формат x509base64. Это делается так
openssl x509 -inform der -in mycompanyname.cer -out mycompanyname.pem
На выходе получим файл /usr/local/BGBillingServer/mycompanyname.pem
6) Теперь генерим ключ, зашифрованный паролем, на основе которого будем генерить главный сертификат модуля MPS
openssl gersa -des3 -out mps.key 1024
У нас спросят пароль для генерирования ключа, вводим его и запоминаем(к примеру я ввел - testtest)
На выходе получаем файлик /usr/local/BGBillingServer/mps.key
7) Создаем на основе mps.key главный сертификат модуля
openssl req -new -x509 -days 1200 -key mps.key -out mps.pem
После ввода команды спросят пароль на ключ mps.key в нашем случае testtest
И опять отвечаем на наводящие вопросы. Ничего сложного там нет.
На выходе получаем файл mps.pem
8 ) Теперь добавляем полученный сертификат в хранилище
keytool -keystore .keystore -alias mps -importcert -file mps.pem
У нас спросят пароль на хранилище, вбиваем (как мы помним) "bgbilling"
9) Можно просмотреть опять содержимое хранилища и увидеть, что в нем появилось нечто новое :)
[root@billing /usr/local/BGBillingServer]# keytool -keystore .keystore -list
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 2 entries

bgbilling, Dec 16, 2009, PrivateKeyEntry,
Certificate fingerprint (MD5): 11:5E:97:2C:EF:28:E9:B8:34:55:4E:47:C2:7B:AE:A8
mps, Dec 16, 2009, trustedCertEntry,
Certificate fingerprint (MD5): C0:3B:14:98:23:F3:AF:46:28:85:46:F3:5E:EC:C4:F7

[root@billing /usr/local/BGBillingServer]#
10) Так как в моем случае мне прислали CSR-запрос на подпись, то я на основе запроса создаю подписанный сертификат
openssl x509 -rq -in mycompanyname.req -CA mps.pem -CAkey mps.key -out ciberplat.pem -days 1200 -CAcreateserial -CAserial mps.seq
После ввода команды у нас спросят пароль на ключ mps.key, вводим testtest
На выходе получили ciberplat.pem - подписанный еами сертификат.
После этого отправляем этот подписанный сертификат ciberplat.pem обратно в организацию, которая прислала mycompanyname.req. Больше в эту организацию ничего не отсылаем. И сразу хочу заметить, что проверить работу платежей с помощью этого сертификата и браузера не получится. Проверить смогут только товарищи из той организации, которая прислал CSR-запрос (это все потому что вы не знаете пароль на их закрытый ключ).
11) Теперь вытаскиваем public key из сертификата ciberplat.pem
openssl x509 -inform pem -in ciberplat.pem pubkey
Из вывода копируем все, что находится между BEGIN PUBLIC KEY и END PUBLIC KEY и вставляем в mps.1.cert.pem конфига MPS.
12) И добавляем в хранилище полученный сертификат ciberplat.pem
[root@billing /]# keytool -keystore .keystore -alias cibercrypt -importcert -file cibercrypt.pem
Спросит пароль на хранилище (bgbilling)
13) Теперь опять можно просмотреть содержимое хранилища и увидеть, что там снова появилось нечто новое
[root@billing /usr/local/BGBillingServer]# keytool -keystore .keystore -list
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 3 entries

bgbilling, Dec 16, 2009, PrivateKeyEntry,
Certificate fingerprint (MD5): 11:5E:97:2C:EF:28:E9:B8:34:55:4E:47:C2:7B:AE:A8
mps, Dec 16, 2009, trustedCertEntry,
Certificate fingerprint (MD5): C0:3B:14:98:23:F3:AF:46:28:85:46:F3:5E:EC:C4:F7
cibercrypt, Dec 18, 2009, trustedCertEntry,
Certificate fingerprint (MD5): E2:49:1F:6B:7E:06:A0:AB:14:4E:1D:47:BD:DF:E0:20

[root@billing /usr/local/BGBillingServer]#
На этом все. Если что-то не так, то ткните носом ибо хочу, чтобы те, кто только собирается это делать - тратили меньше времени на это.
Спасибо.


Последний раз редактировалось Orlov 19 дек 2009, 08:22, всего редактировалось 10 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 дек 2009, 09:14 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
http://wiki.bgbilling.ru/
:)
Сюда можете продублировать ещё :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 дек 2009, 18:49 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Цитата:
(это все потому что вы не знаете пароль на их закрытый ключ)

потому что при подписывании запроса они закрытый ключ не присылают ни в каком виде, даже запароленном.
Цитата:
11) Теперь вытаскиваем public key из сертификата mps.pem
openssl x509 -inform pem -in mps.pem pubkey
Из вывода копируем все, что находится между BEGIN PUBLIC KEY и END PUBLIC KEY и вставляем в mps.1.cert.pem конфига MPS.

Из сертификата ciberplat.pem


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2009, 08:16 
Не в сети

Зарегистрирован: 15 дек 2009, 11:51
Сообщения: 40
Карма: 0
Amir писал(а):
Цитата:
(это все потому что вы не знаете пароль на их закрытый ключ)

потому что при подписывании запроса они закрытый ключ не присылают ни в каком виде, даже запароленном.
Цитата:
11) Теперь вытаскиваем public key из сертификата mps.pem
openssl x509 -inform pem -in mps.pem pubkey
Из вывода копируем все, что находится между BEGIN PUBLIC KEY и END PUBLIC KEY и вставляем в mps.1.cert.pem конфига MPS.

Из сертификата ciberplat.pem

ИМЕННО!!! Выяснилось это при тетировании с платежными системами!!!
Плюс к этому надо добавить в хранилище сертификат ciberplat.pem!!!
Обновил инструкцию!!!!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 дек 2009, 08:23 
Не в сети

Зарегистрирован: 15 дек 2009, 11:51
Сообщения: 40
Карма: 0
Сейчас еще состряпаю подробную инструкцию по созданию самоподписанного сертификата.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 сен 2010, 20:17 
Не в сети
Клиент

Зарегистрирован: 27 апр 2010, 13:26
Сообщения: 108
Откуда: Kirov
Карма: 0
Хотелось бы дополнить, или доразобраться до конца..
Начнем с того, что бгбиллинг просит, чтобы в сертификате обязательно была key pair (причем пароль на ключ должен быть или пустой или пароль должен совпадать с паролем на хранилище). Собсно он ее (key pair) и делает корневым сертификатом модуля MPS.
В предыдущем описанном случае все, в принципе, работает, но мы получаем ситуацию, когда киберплат.pem подписан mps.key/cert, а никак не key pair созданной при создании хранилища; в этом случаем получается что нам надо отдать платежной системе 2 корневых/доверенных сертификата, один от ключевой пары, который и есть доверенный при обращении к модулю MPS, второй это mps.cert (от mps.key), которым подписан киберплат.pem (ведь он только его покажет как подписанта сертификата киебрплат).

Как вариант можно сделать так:
1. создаем хранилище сертификатов при помощи keytool, пароль на ключ забиваем такой же как и на само хранилище.
2. При помощи portecle выковыриваем из ключевой пары секретный ключ и .pem (или экспортируем pem/cert из хранилища, фактически без разницы), который потом импортировать в хранилище не надо, он уже есть в виде key pair.
3. Либо
3.1). создаем ключ на киберплат.key (любую ПС, пусть будет киберплат)
3.2). создаем запрос на подпись (к примеру, для проверки в браузере самим)
либо
3.1) нам ПС присылает запрос на подпись.
4.Создаем подписанный сертификат из запроса (вот тут как раз мы подписываем все это ключом .key и сертификатом .pem выковырянным из ключевой пары, он и будет подписантом сертификата и доверенным сертификатом для ПС)
5. Если необходимо генерим .p12 (для проверки запросов в браузере. импортируем оба сертификата и проверяем запросы, не забыв вбить в модуль MPS открытый ключ из клиентского сертификата), либо отсылаем киберплат.pem платжной системе, вместе с доверенным сертификатом (выковырянным из key pair).
Минусы: пароль на храналище и пароль на .key одинаковые (хотя мы и так может его выковырять в предыдущем случае при 2х сертификатах, но там хотя бы клиентский сертификат подписан другим сертификатом/ключем, пароль на который храналище не знает)

Так вот, собсно, глупый вопрос, как все таки правильнее всего нужно сделать ?
В теории правильнее всего этот вариант, т.к. доверенный сертификат для ПС и будет подписантом клиентского сертификата и правильно будет показывать иерархию подписания; но тут возникает проблема в безопастности при получении кем-то пароля рута от сервера (а в первом случае у нас в хранилище только сертификат, а ключ мы можем спрятать). С другой стороны в прошлом случае даже если мы отправим ПС доверенный mps.cert/pem и клиентский сертификат., то биллинг (модуль MPS) все равно запросит импорт его главного сертификата (который он берет из хранилища из key pair).
Как-то так.. м?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 сен 2010, 13:02 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Не совсем понял в чем проблема... Создается главный ключ для mps, он добавляется в доверенные. Далее создается клиентская пара ключей osmp, которые подписывается ключем mps и сертификат osmp автоматический становится доверенным. Далее осмп передается клиентский сертификат с приватным ключем и сертификат сервера (не mps, потому что при работе протокола сертификат mps нужен только для определения доверенности клиентского).
Cyberplat обычно посылает запрос на подпись, т.е. у них уже есть своя пара ключей и ее нужно только подписать ключем mps.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 сен 2010, 13:56 
Не в сети
Клиент

Зарегистрирован: 27 апр 2010, 13:26
Сообщения: 108
Откуда: Kirov
Карма: 0
спасибо за скобки, разобрался.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.056s | 67 Queries | GZIP : On ]