Взаимодействие по SSL

SSL-сертификат может понадобиться в двух случаях: для защиты данных пользователей (при работе с Яндекс.Кассой) и для аутентификации соединений с серверами Яндекс.Денег.

1. Сертификат для защиты персональных данных пользователей

Такой сертификат требуется при подключении к Яндекс.Кассе любого магазина с уведомлениями о платежах по HTTP (способы подключения — Модуль в CMS или HTTP-протокол). Его задача — обеспечить передачу данных пользователей в зашифрованном виде. В этом случае подойдет любой готовый сертификат для домена. Его можно получить бесплатно при подключении к Кассе или купить в любом официальном удостоверяющем центре. Самоподписной сертификат тоже подойдет.

Tip.

Не следует использовать SSL с поддержкой SNI (Server Name Identification).

2. Для аутентификации соединений с серверами Яндекс.Денег

Такой сертификат нужен для работы по протоколам Яндекс.Денег с проведением финансовых операций в рамках управления заказами (MWS): возвратов, отложенных платежей и других. А также для работы по протоколу массовых выплат и зачислений на кошельки. Для этих целей годится только специальный SSL-сертификат, выданный удостоверяющим центром ООО НКО «Яндекс.Деньги» (NBCO YM Root).

Если вы сомневаетесь, нужно ли вам получать сертификат, и какой именно, спросите у своего менеджера в Яндекс.Деньгах

Получение SSL-сертификата для взаимодействия с серверами Яндекс.Денег

Чтобы получить сертификат, нужно создать запрос на сертификат (в формате *.csr), заполнить заявку на получение сертификата и отправить запрос и заявку на сертификат по электронной почте своему менеджеру в Яндекс.Деньгах.

Tip.

Для генерации запроса на сертификат в формате *.csr используйте утилиту OpenSSL.

1. Создание приватного ключа

Выполните команду:

openssl genrsa -aes256 -out private.key 2048

Введите пароль и подтвердите. Например:

Enter pass phrase for private.key: 12345
Verifying - Enter pass phrase for private.key: 12345

В директории выполнения команды будет создан файл с приватным ключом: private.key.

Tip.

Это секретная информация. Сохраняйте конфиденциальность приватного ключа. Файл с приватным ключем зашифрован и защищен паролем.

2. Создание CSR-запроса на сертификат

Выполните команду:

openssl req -new -key private.key -out request.csr

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

Tip.

При создании CSR-запроса в Windows укажите в команде путь к конфигурационному файлу OpenSSL. Для этого добавьте к команде ключ -config "{path}" -out. Пример команды:

req -new -key private.key -config "C:\openssl-WIN32\openssl.cnf" -out request.csr

Пример заполнения параметров запроса на сертификат

Параметр

Значение

Примечание
Country Name (2 letter code) [AU]:RUОбязательное
State or Province Name (full name):RussiaОбязательное
Locality Name (eg, city): []:MoscowНе обязательное
Organization Name (eg, company) [Internet Widgits Pty Ltd]:OOO PredpriyatieВведите необходимые параметры для запроса на сертификат. Используйте только латинские символы.
Organizational Unit Name (eg, section) []:Не обязательное
Common Name (eg, YOUR name) []:/business/predpriyatie

Обязательное поле.

/business/ — обязательная часть этого параметра, ее менять не нужно. После нее могут следовать любые латинские буквы без пробелов. Например, название вашей компании латиницей.

Email Address:predpriyatie@yandex.ru

Обязательное

Параметр

Значение

Примечание
Country Name (2 letter code) [AU]:RUОбязательное
State or Province Name (full name):RussiaОбязательное
Locality Name (eg, city): []:MoscowНе обязательное
Organization Name (eg, company) [Internet Widgits Pty Ltd]:OOO PredpriyatieВведите необходимые параметры для запроса на сертификат. Используйте только латинские символы.
Organizational Unit Name (eg, section) []:Не обязательное
Common Name (eg, YOUR name) []:/business/predpriyatie

Обязательное поле.

/business/ — обязательная часть этого параметра, ее менять не нужно. После нее могут следовать любые латинские буквы без пробелов. Например, название вашей компании латиницей.

Email Address:predpriyatie@yandex.ru

Обязательное

В директории, в которой была выполнена команда, будет создан файл request.csr.

3. Получение электронной подписи для заявки на сертификат

Электронная подпись нужна для заполнения заявки на сертификат, она содержится в файле сертификата.

Чтобы получить электронную подпись, выполните команду:

openssl req -in request.csr -noout -text

Текстовым представлением электронной подписи является часть ответа после строки Signature Algorithm: sha1WithRSAEncryption. Например:

Signature Algorithm: sha1WithRSAEncryption
5b:67:42:8c:5a:a7:bc:bf:05:99:77:39:2e:e7:e7:5d:8e:47:
09:e9:5a:46:62:3c:b1:63:2a:de:06:26:54:a4:12:b4:17:b2:
ca:ff:f4:3f:c0:09:ee:7a:88:5b:b9:f5:04:cb:24:bd:5f:bd:
3b:f7:38:54:71:1c:fe:98:17:66:ae:72:2d:8a:31:34:94:30:
58:ad:79:60:e5:ca:24:83:8b:c7:96:11:c6:d9:c9:6e:7a:b0:
83:20:96:96:08:72:38:3e:24:dc:30:35:f7:85:f4:d3:21:62:
13:44:1f:49:2a:d3:c2:73:2d:3b:fc:07:3f:20:8e:d3:c1:c8:
4c:3b:69:a3:24:56:1e:5c:9c:2f:eb:83:97:80:8b:25:5d:6a:
63:80:59:24:c0:1a:b5:ed:9f:fa:b9:6d:38:dc:6b:ff:29:9e:
24:b7:95:07:37:a9:71:90:ad:b7:51:d6:0e:62:82:5d:39:8a:
f2:4a:06:db:5e:2c:ae:4f:c8:76:2b:ee:e9:13:04:e3:72:c8:
6b:26:61:6c:aa:07:c1:3f:3c:b0:92:b0:29:5f:74:14:7c:34:
77:c8:c6:7a:2f:33:55:c5:0f:1d:e0:b7:8a:d9:84:d7:78:fb:
59:22:e0:58:49:97:16:f2:77:58:8b:8a:af:f2:af:43:b1:fa:
27:58:e1:c2
4. Заполнение заявки на сертификат

Скачайте заявку на сертификат, заполните и распечатайте. Подставьте подпись и печать. Отсканируйте.

ПараметрОписание
CNДолжно соответствовать значению параметра Common Name (eg, YOUR name). Например, /business/predpriyatie.
Электронная подпись запроса на сертификатТекстовое представление, полученное на предыдущем шаге.
Наименование организации латинскими буквамиДолжно соответствовать значению параметра Organization Name (eg, company) [Internet Widgits Pty Ltd].
Причина запроса

Возможные варианты:

  • первоначальный — для получения первого сертификата;
  • плановая замена — для замены сертификата, у которого закончился срок действия;
  • замена скомпрометированного — для замены ранее выпущенного сертификата при нарушении безопасности;
  • добавление сервера — для использования нового сертификата на дополнительных серверах или сервисах.
Контактное лицоКонтакты специалиста для связи при возникновении вопросов по выданному сертификату.
Адрес электронной почтыАдрес для отправки выпущенного сертификата.
ПараметрОписание
CNДолжно соответствовать значению параметра Common Name (eg, YOUR name). Например, /business/predpriyatie.
Электронная подпись запроса на сертификатТекстовое представление, полученное на предыдущем шаге.
Наименование организации латинскими буквамиДолжно соответствовать значению параметра Organization Name (eg, company) [Internet Widgits Pty Ltd].
Причина запроса

Возможные варианты:

  • первоначальный — для получения первого сертификата;
  • плановая замена — для замены сертификата, у которого закончился срок действия;
  • замена скомпрометированного — для замены ранее выпущенного сертификата при нарушении безопасности;
  • добавление сервера — для использования нового сертификата на дополнительных серверах или сервисах.
Контактное лицоКонтакты специалиста для связи при возникновении вопросов по выданному сертификату.
Адрес электронной почтыАдрес для отправки выпущенного сертификата.

5. Отправка запроса и заявки на сертификат в Яндекс.Деньги

Отправьте файл запроса на сертификат (request.csr) и скан заявки по электронной почте своему менеджеру в Яндекс.Деньгах.

Выпуск сертификата занимает не больше 2 рабочих дней.

6. Установка сертификата

В ответ на заявку менеджер в Яндекс.Деньгах пришлет файл с сертификатом. Срок действия сертификата 1 год.

Что дальше:

  1. Разместите сертификат на своем сервере.
  2. Пропишите путь к нему в настройках скриптов, которые взаимодействуют с Яндекс.Деньгами.
  3. Если вы проверяете сертификат конечного сервера, загрузите цепочку сертификации (сертификаты удостоверяющих центров NBCO YM Root и NBCO YM Int) и добавьте их в списки доверенных корневых и промежуточных центров сертификации своего ПО.
Tip.

При необходимости можно хранить пару «приватный ключ»—«сертификат» в едином зашифрованном файле-ключнице формата PKCS#12. Изготовить такую ключницу можно командой:

openssl pkcs12 -export -in username.crt -inkey private.key -out username.p12

За подробной информацией по установке сертификата обращайтесь к менеджеру по подключению.

Порядок работы с SSL-сертификатами

Необходимо:
  • Проверять подлинность серверов Яндекс.Денег с помощью цепочки сертификации и не устанавливать соединение, если проверка не пройдет успешно.
  • Использовать свой приватный ключ и сертификат при установлении подключений к серверам Яндекс.Денег.
  • Сохранять конфиденциальность приватного ключа.
  • Самостоятельно следить за сроком действия сертификата.
Tip.
  • Дополнительно рекомендуется проверять сертификаты серверов Яндекс.Денег по списку отозванных сертификатов (Certificate Revocation List, CRL)
  • На каждый сервис, которому нужен доступ к серверам Яндекс.Денег, рекомендуется получить свой сертификат. Но можно использовать один сертификат на все сервисы.

В случае компрометации приватного ключа обязательно сообщите менеджеру в Яндекс.Деньгах.

Если срок действия сертификата закончится или он будет скомпрометирован, можно получить новый по данному регламенту.