Как добавить SSL-сертификат в 1C УТ

Иногда в 1С может случиться вот такая проблема:

Во время настройки профиля обмена 1С радует вот такой надписью. Тут совсем непонятно что конкретно не нравится 1Ске из-за очень информативной информации об ошибке с кучкой “или”. Но вполне возможно что проблема именно в SSL-сертификате.

Итак, сейчас мы добавим поддержку используемого вами серта в 1С на примере SSL от Let’s Encrypt.

Генерация файла с сертификатами

Для начала откроем сайт в Firefox и экспортнем сертификаты.

Шаг 1

Шаг 2

Просматриваем сертификаты

Шаг 3

Видим здесь 3 сертификата - корневой, промежуточный и непосредственно серт от самого сайта.

Шаг 4

Экспортируем их все по отдельности.

Шаг 5

Теперь берем консольную утилиту OpenSSL и преобразовываем формат сертификатов:

1
2
3
openssl x509 -in DSTRootCAX3.crt -text -outform PEM -out DSTRootCAX3.pem
openssl x509 -in Let\'sEncryptAuthorityX3.crt -text -outform PEM -out Let\'sEncryptAuthorityX3.pem
openssl x509 -in site.crt -text -outform PEM -out site.pem

Получаем md5-хэши сертификатов:

1
2
3
openssl x509 -in DSTRootCAX3.pem -noout -fingerprint -md5 > DSTRootCAX3.md5
openssl x509 -in Let\'sEncryptAuthorityX3.pem -noout -fingerprint -md5 > Let\'sEncryptAuthorityX3.md5
openssl x509 -in site.pem -noout -fingerprint -md5 > site.md5

Генерим заголовки

1
2
3
echo -e "\nDSTRootCAX3\n======================" > DSTRootCAX3.header
echo -e "\nLet\'sEncryptAuthorityX3\n======================" > Let\'sEncryptAuthorityX3.header
echo -e "\nsite\n======================" > site.header

Теперь сливаем все в один файл

1
cat DSTRootCAX3.header DSTRootCAX3.md5 DSTRootCAX3.pem Let\'sEncryptAuthorityX3.header Let\'sEncryptAuthorityX3.md5 Let\'sEncryptAuthorityX3.pem site.header site.md5 site.pem > certificate

В итоге получаем файл такого вида:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DSTRootCAX3
===================
MD5 Fingerprint=41:03:52:DC:0F:F7:50:1B:16:F0:02:8E:BA:6F:45:C5
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
44:af:b0:80:d6:a3:27:ba:89:30:39:86:2e:f8:40:6b
Signature Algorithm: sha1WithRSAEncryption
Issuer: O=Digital Signature Trust Co., CN=DST Root CA X3
Validity
Not Before: Sep 30 21:12:19 2000 GMT
Not After : Sep 30 14:01:15 2021 GMT
Subject: O=Digital Signature Trust Co., CN=DST Root CA X3
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
00:df:af:e9:97:50:08:83:57:b4:cc:62:65:f6:90:
82:ec:c7:d3:2c:6b:30:ca:5b:ec:d9:c3:7d:c7:40:
c1:18:14:8b:e0:e8:33:76:49:2a:e3:3f:21:49:93:
ac:4e:0e:af:3e:48:cb:65:ee:fc:d3:21:0f:65:d2:
2a:d9:32:8f:8c:e5:f7:77:b0:12:7b:b5:95:c0:89:
...

Получается довольно простой формат - название, разделитель в виде символов =====, md5-хэш и далее содержимое pem-сертификата. И так все три серта подряд.

Интеграция сертов в 1С

Теперь ищем в установленной 1С файл cacert.pem
Путь может быть примерно такой - C:\Program Files\1cv8\8.3.10.2580\bin\cacert.pem

Открываем файл и дописываем в него содержимое нашего сгенерированного файла certificate.
1С кстати можно не перезагружать. Пробуем подключение.

Профит!

Бонус

Серт для сайта можно не прописывать. Можно просто ограничиться корневым и промежуточным сертификатами.
Вот готовый файл certificate для Let’s Encrypt:

https://gist.github.com/rhamdeew/6d5ee8cff99fba9e2575a74e37d203d2