B2BB2CH2H

TLS-сертификат

Взаимодействие между вами и Банком реализовано с использованием двухстороннего TLS-соединения (поддерживаемая версия TLS 1.2), для которого необходимо выпустить сертификат.

Инструкция по выпуску сертификата

Для выпуска сертификата необходимо сгенерировать закрытый ключ и запрос на сертификат в OpenSSL, выпустить сертификат и установить в своей системе:

1

Используйте готовый файл конфигурации с обязательными атрибутами в subject

Воспользуйтесь заранее подготовленным конфигурационным файлом: openssl_INNLE.cnf. Файл уже содержит все необходимые атрибуты и не требует внесения изменений. Все остальные параметры будут введены вручную через терминал в процессе генерации закрытого ключа и запроса на сертификат.

2

Сгенерируйте закрытый ключ, введя команду в терминале

  1. 1.
    Откройте терминал и перейдите в папку, в которой находится скачанный ранее файл openssl_INNLE.cnf. Если файл был сохранён в папку "Загрузки", перейдите в неё, используя следующую команду: cd ~/Downloads
  2. 2.
    Убедитесь, что в этой папке находится файл openssl_INNLE.cnf, используя команду: ls. Вы должны увидеть в выводе файл openssl_INNLE.cnf.
  3. 3.
    Сгенерируйте закрытый ключ, введя следующую команду: openssl genrsa -des3 -out Company.key 2048
  4. 4.
    После ввода команды вам будет предложено задать пароль для закрытого ключа (PEM pass phrase). Введите пароль и подтвердите его повторным вводом. Пароль необходимо запомнить, так как он потребуется на следующих шагах.
  5. 5.
    После выполнения команды в текущей папке будет создан файл Company.key, содержащий закрытый ключ.
Пример работы в терминале
1(base) johnsmith@johnsmiths-MacBook-Pro ~ % cd ~/Downloads
2(base) johnsmith@johnsmiths-MacBook-Pro Downloads % ls
3openssl_INNLE.cnf
4(base) johnsmith@johnsmiths-MacBook-Pro Downloads % openssl genrsa -des3 -out Company.key 2048
5Enter PEM pass phrase:
6Verifying - Enter PEM pass phrase:
3

На основе созданного ключа сгенерируйте запрос на сертификат (CSR) с приватным ключом RSA

  1. 1.
    Введите следующую команду для создания запроса на сертификат (CSR): openssl req -utf8 -config openssl_INNLE.cnf -key Company.key -new -sha256 -out Company.csr
  2. 2.
    Атрибут CLIENT_ID, а также поля An optional company name и A challenge password являются опциональными и могут быть оставлены пустыми.
  3. 3.
    Выполните команду и введите указанные данные, когда терминал запросит их. После выполнения команды будет создан файл Company.csr, содержащий запрос на сертификат:
Пример работы в терминале
1(base) johnsmith@johnsmiths-MacBook-Pro Downloads % openssl req -utf8 -config openssl_INNLE.cnf -key Company.key -new -sha256 -out Company.csr
2Enter pass phrase for Company.key:
3You are about to be asked to enter information that will be incorporated
4into your certificate request.
5What you are about to enter is what is called a Distinguished Name or a DN.
6There are quite a few fields but you can leave some blank
7For some fields there will be a default value,
8If you enter '.', the field will be left blank.
9CLIENT_ID []:b95eo4ed-91fe-430a-a101-894f06f3ab2a
10
11Please enter the following 'extra' attributes
12to be sent with your certificate request
13A challenge password []:1234
14An optional company name []:
4

Проверьте наличие обязательных атрибутов в subject созданного запроса на сертификат

openssl req -config openssl_INNLE.cnf -noout -text -in Company.csr

Пример запроса
1Certificate Request:
2    Data:
3        Version: 0 (0x0)
4        Subject: C=RU, L=Moscow, O=Company Name, CN=Ivanov Ivan Ivanovich/emailAddress=example@company.ru/INNLE=01234567890/CLIENT_ID=b95e04ed-91fe-430a-a101-894f06f3ab2a
5        Subject Public Key Info:
6            Public Key Algorithm: rsaEncryption
7                RSA Public-Key: (2048 bit)
8                Modulus:
9                    00:bd:e8:36:29:cc:b4:8f:92:bf:d0:3e:62:9f:a2:
10                    cc:3a:9e:92:3c:8b:dc:ed:9c:e2:32:4c:8f:67:c5:
11                    3c:07:99:a5:80:fd:be:5c:f4:bb:7e:c8:2d:ab:3a:
12                    47:2a:32:44:26:19:f2:1f:66:c4:4f:9b:71:4e:c1:
13                    ca:03:f8:78:60:a0:d4:51:15:2c:08:0e:3f:70:3b:
14                    ee:73:fc:8d:b4:44:3a:ae:04:10:e6:b5:ca:3a:c8:
15                    a8:a0:0a:7d:bc:a9:9e:90:46:87:de:38:b1:87:ba:
16                    e5:56:bd:5a:df:c8:84:7f:f7:2b:92:f4:a5:d0:b5:
17                    3c:1a:5e:92:de:ff:f0:19:45:32:92:41:aa:b9:97:
18                    35:02:bc:3d:ab:11:1c:94:6c:e3:8e:22:c0:1d:22:
19                    d1:c1:85:d2:b9:45:64:da:4e:a4:d1:49:00:29:2b:
20                    b2:b4:33:0b:62:62:e7:79:15:4f:b9:77:3c:dc:47:
21                    6e:ef:bb:8c:2c:31:6f:d7:7b:74:bb:84:31:bc:53:
22                    a1:e6:fe:61:9c:88:a5:6c:ad:07:2b:a6:04:1f:ba:
23                    57:8e:57:50:ca:2b:77:4e:3d:78:62:00:71:c6:17:
24                    f0:3c:57:ff:af:86:ce:9d:c2:37:e3:54:39:06:63:
25                    5d:35:c7:e6:ff:8c:4a:a5:f9:50:3f:83:90:6e:14:
26                    54:9d
27                Exponent: 65537 (0x10001)
28        Attributes:
29            challengePassword        :unable to print attribute
30        Requested Extensions:
31            X509v3 Basic Constraints: 
32                CA:FALSE
33            X509v3 Key Usage: 
34                Digital Signature, Non Repudiation, Key Encipherment
35    Signature Algorithm: sha256WithRSAEncryption
36        8d:75:e5:5e:15:c9:82:d6:f8:91:e3:ea:fb:cf:46:46:2c:af:
37        67:a2:d3:2d:85:0c:b3:ef:2d:7d:99:0a:31:b7:22:35:b2:d7:
38        cf:20:6b:b6:47:17:7a:aa:8d:e1:dc:51:f4:fb:21:84:2f:e4:
39        9d:b5:b6:07:8f:39:4c:f1:48:61:2d:5e:ee:20:d4:0c:ab:6d:
40        8d:fe:08:6c:aa:01:e5:da:df:6d:79:d9:2c:89:4c:f5:11:3e:
41        5a:66:2e:46:93:bb:62:c1:ae:d1:b7:dc:88:53:05:2f:92:7d:
42        f9:09:ec:92:ab:3e:f3:83:5f:44:74:f5:ce:d2:18:8c:f3:22:
43        22:8f:96:1d:b1:8a:3b:f2:ca:a9:4f:47:03:eb:0e:f2:3b:31:
44        50:7d:60:c9:8e:1c:c2:a8:c0:48:e5:c7:83:ca:13:79:04:ad:
45        af:f0:67:e9:bf:f9:3d:11:0c:ce:03:f3:b0:8b:0a:6a:47:0e:
46        96:e2:2d:dd:67:8a:16:f9:f8:d6:46:10:ec:86:60:9c:8b:af:
47        7f:19:5e:b7:13:ec:92:6d:a3:33:cd:31:1a:6c:97:4e:e2:86:
48        e5:ea:94:e5:7d:ed:39:05:72:c3:12:9c:14:49:a5:7e:26:69:
49        20:11:e0:7b:3b:5f:bc:00:f8:3d:c0:a8:17:18:0b:8b:ae:a8:
50        8e:4e:e9:7d
5

Выпустите и скачайте сертификат

Выпустите TLS-сертификат на Портале разработчика в разделе TLS-сертификаты, прикрепив ранее созданный запрос на сертификат Company.csr, и скачайте его. Подробнее в статье Портал разработчика / Выпуск TLS-сертификата.

Важно! Никому не передавайте закрытый ключ.

6

Создайте pfx-файл для установки сертификата в системе

Для сборки файла выполните команду в терминале:

openssl pkcs12 -export -out Company.pfx -inkey Company.key -in Company.cer -certfile keys\root_apica_2022.cer -certfile keys\sub_root_apica_2022.cer

Полученный файл Company.pfx необходимо установить в своей системе.

Требования к сертификату

Чтобы обеспечить проверку вашей системы на основе сертификата, в subject сертификата предусмотрены обязательные поля:

Global Subject

Атрибут Значение
СountryName Страна, в виде двухсимвольного ISO-кода. Для России: RU
OrganizationName Название организации
CommonName ФИО представителя организации
EmailAddress Электронный адрес для обратной связи (служебный, не персональный)

В зависимости от правовой формы должно быть указано одно из нижеперечисленных полей:

Variable Subject

Атрибут Значение
Для юридических лиц в России INNLE = 1.2.643.100.4
Для иностранных партнёров FOREIGNID = 1.3.6.1.4.1.16745.100.1
Идентификатор партнёрского сервиса CLIENT_ID = 1.3.6.1.4.1.16745.100.2

Требования к полям сертификата

  1. 1.
    Поля на кириллице
    • •
      Поля CountryName , OrganizationName и CommonName могут быть указаны либо в транслитерации, либо кириллицей с использованием кодировки UTF-8.
  2. 2.
    ИНН
    • •
      Для заполнения ИНН вам будут предложены два поля: INNLE и INN . Юридическим лицам и ИП заполнять поле INN не требуется, а ИНН необходимо указать в поле INNLE :
      • •
        юридическим лицам: десятизначный цифровой код без дефисов и пробелов.
      • •
        ИП: двенадцатизначный цифровой код без дефисов и пробелов.
  3. 3.
    СНИЛС
    • •
      Поле SNILS является опциональным, юридическим лицам и ИП заполнять его не требуется.
  4. 4.
    LDAP Профиль
    • •
      Поля CountryName и INNLE должны строго совпадать с соответствующими значениями, используемыми в профиле LDAP, так как они формируют имя профиля.
Настройка кодировки UTF-8 для использования кириллицы при генерации сертификата

Чтобы иметь возможность вводить параметры на кириллице в полях countryName, organizationName и commonName при генерации запроса на сертификат (CSR), выполните следующие действия.

  1. 1.
    Для пользователей Windows
    • •
      Откройте Панель управления > Часы и регион > Регион.
    • •
      Перейдите на вкладку Дополнительно.
    • •
      Нажмите Изменить язык системы.
    • •
      Установите флажок «Бета-версия: Использовать Юникод (UTF-8) для поддержки языка во всем мире».
    • •
      Нажмите ОК и перезагрузите компьютер.
  2. 2.
    Для пользователей MacOS
    • •
      Откройте Терминал.
    • •
      В меню выберите Terminal > Настройки.
    • •
      Перейдите во вкладку Кодировки и убедитесь, что установлен флажок «Unicode (UTF-8)».
Использование сертификата

Использование TLS-сертификата необходимо для установки mTLS-соединения и является обязательным.

Для успешной установки mTLS-соединения в зависимости от требований используемого вами клиента при отправке запросов вам может понадобиться сертификат и закрытый ключ. Рекомендуем ознакомиться с документацией используемого клиента.

Ниже представлен пример запроса с установкой mTLS-соединения с помощью cURL.

Пример запроса
1curl -X GET https://baas.alfabank.ru/api/endpoint \
2  -v --cert Company.cer \
3  --key Company.key \
4  -H 'Accept: application/json' \
5  -H 'Authorization: Bearer {access-token}' \
6  -H 'Content-Type: application/json'
Повторный выпуск сертификата

За 1 месяц до истечения срока действия TLS-сертификата вам на почту придет уведомление, после чего вам будет необходимо сформировать запрос на новый сертификат и направить в Банк в соответствии с инструкцией выше.

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