Сертификаты
ОСМП, Empay, Pegas, Rapida, Comepay, CyberPlat используют метод аутентификации по сертификатам. Для работы необходим серверный сертификат и использование HTTPS.
1. Необходимо экспортировать серверный сертификат, чтобы удаленная сторона могла добавить его в доверенные:
keytool -keystore .keystore -
alias
bgbilling -exportcert -file bgbilling.cer
Сконвертировать сертификат в x509 base64 можно командой:
openssl x509 -inform der -
in
bgbilling.cer -out bgbilling.pem
2. Работа с клиентским сертификатом платежной системы может проходить в нескольких вариантах:
2.1. Платежная система присылает сертификат, который просто нужно добавить в доверенные:
keytool -keystore .keystore -
alias
pegas -importcert -file pegas.cer
Далее переходим к пункту 3.
2.2. Подпись запроса на сертификат или создание подписанного сертификата:
Сначала создаем главный сертификат для модуля, им будут подписаны клиентские сертификаты, а сам он будет добавлен в доверенные сертификаты в .keystore (таким образом).
Генерируем ключ, который будет зашифрован паролем:
[amir
@ts01
keys]$ 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:
Verifying - Enter pass phrase
for
mps.key:
Создаем на основе ключа сертификат, здесь понадобится ввести описание сертификата, точка ('.') означает пустое поле:
[amir
@ts01
keys]$ openssl req -
new
-x509 -days
1001
-key mps.key -out mps.pem
Enter pass phrase
for
mps.key:
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) [GB]:RU
State or Province Name (full name) [Berkshire]:.
Locality Name (eg, city) [Newbury]:.
Organization Name (eg, company) [My Company Ltd]:Provider
Organizational Unit Name (eg, section) []:Provider BGBilling MPS
Common Name (eg, your name or your server's hostname) []:Provider BGBilling MPS
Email Address []:support
@provider
.ru
Добавляем сертификат в доверенные:
keytool -keystore .keystore -
alias
mps -importcert -file mps.pem
Далее, если нам прислали запрос на подпись сертификата (.csr) - переходим к пункту 2.2.2, иначе - к пункту 2.2.1.
2.2.1. Если нам нужно самим создать сертификат (нам не присылали запрос на подпись):
Генерируем ключ, osmp.key - в данном случае имя файла, здесь уже нужно использовать другой пароль, потому что его необходимо будет также переслать удаленной стороне:
[amir
@ts01
keys]$ openssl genrsa -des3 -out osmp.key
1024
Generating RSA
private
key,
1024
bit
long
modulus
e is
65537
(
0x10001
)
Enter pass phrase
for
osmp.key:
Verifying - Enter pass phrase
for
osmp.key:
И создаем запрос на подпись:
[amir
@ts01
keys]$ openssl req -
new
-key osmp.key -out osmp.csr
Enter pass phrase
for
osmp.key:
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) [GB]:RU
State or Province Name (full name) [Berkshire]:.
Locality Name (eg, city) [Newbury]:.
Organization Name (eg, company) [My Company Ltd]:OSMP
Organizational Unit Name (eg, section) []:OSMP-BGBilling
Common Name (eg, your name or your server's hostname) []:www.osmp.ru
Email Address []:support
@osmp
.ru
Please enter the following
'extra'
attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Далее переходим к пункту 2.2.2.
2.2.2. Если нам прислали CSR-запрос на подпись или мы только что сами создали новый, создаем подписанный сертификат из запроса:
[amir
@ts01
keys]$ openssl x509 -req -in osmp.csr -CA mps.pem -CAkey mps.key -out osmp.pem -days
1001
-CAcreateserial -CAserial mps.seq
Signature ok
subject=/C=RU/O=OSMP/OU=OSMP-BGBilling/CN=www.osmp.ru/emailAddress=support
@osmp
.ru
Getting CA Private Key
Enter pass phrase
for
mps.key:
Если к нам приходил только CSR-запрос, то нужно послать только osmp.pem.
Если мы сами генерировали клиентский закрытый ключ, то необходимо передать как osmp.pem, так и osmp.key, т.е. сертификат и приватный ключ.
Связку закрытый ключ и сертификат можно сконвертировать в PKCS12 формат.
[amir
@ts01
keys]$ openssl pkcs12 -export -
in
osmp.pem -inkey osmp.key -out osmp.p12
Сначала необходимо будет ввести пароль на закрытый ключ, который указали при генерации osmp.key, затем два раза - новый (можно тот же самый) уже для нового PKCS файла.
3. Открытый ключ добавленного в доверенные/созданного/подписанного клиентского сертификата необходимо указать в конфиге.
Для этого необходимо скопировать содержание открытого ключа одной строкой, без заголовка и окончания '-----BEGIN PUBLIC KEY-----'/'-----END PUBLIC KEY-----'
Например:
mps.
1
.cert.pem=MIGfMA0GCSqGSIb3DQE.....EmO5Phqo2FG52KwIDAQAB
Извлечь открытый ключ из сертификата можно так:
[amir
@ts01
keys]$ openssl x509 -inform der -
in
osmp.cer -pubkey
#или
[amir
@ts01
keys]$ openssl x509 -inform pem -
in
osmp.pem -pubkey