Автор Тема: Свой Удостоверяющий Центр для 1С сервера и клиентов  (Прочитано 222 раз)

Оффлайн Alex_arch

  • Use linux, Just Linux!
  • Участник
  • *
  • Сообщений: 13
  • Linux for all!
Всех приветствую!
Руководством была поставлена задача создания своего Удостоверяющего Центра для 1С сервера.
Суть в том чтоб использовать openSSL сертификаты и ключи в 1С для подписывания согласований документов внутри предприятия.
Вот к чему я пришел, в контексте понимания работы с openSSL, но дальше с 1С я еще это всё не увязал. Ранее такого делать не приходилось, быть может есть у кого то опыт в этом?
Хотел делать далее производственную инструкцию для использования внутри отдела, но если всё получится, будет и для Альт руководство по внедрению такого функционала.
**********************
Требуется создать в рабочей директории несколько папок, рабочая директория не должна иметь полный доступ для всех пользователей системы.

mkdir {private,certs}**Данная команда создаст в корневой директории две папки private и certs.
Private — будет содержать закрытый ключ
Сerts — папка для хранения подписанных закрытым ключом сертификатов

chmod 700 ./private/**Данная команда назначает доступ к папке ключа только для администратора

openssl genpkey -algorithm RSA -out ./private/1c_priv.key -aes256
**Команда генерации закрытого ключа
**genpkey — ключ указывающий программе сгенерировать закрытый ключ
**-algorithm RSA — ключ указывающий программе использовать алгоритм шифрования RSA
** out ./private/1c_priv.key — ключ указывающий на путь и имя создаваемого файла закрытого ключа
**-aes256 — ключ указывающий необходимость дополнительного шифрования закрытого ключа методом RCA разрядностью 256 бит
Потребуется ввести пароль для работы с создаваемым ключем.

openssl req -x509 -new -nodes -key private/1c_priv.key   -sha256 -days 3650 -out ./certs/1c_cert.crt   -subj "/C=RU/ST=Moscow/L=Moscow/O=CompanyRUS/CN=CompanyRussiya"**req  — подутилита для работы с запросами на сертификаты (CSR)
**-x509  — ключ говорит, что нужно создать самоподписанный сертификат (то есть сертификат, который подписан тем же закрытым ключом, что и сгенерирован)
**-new  — ключ означает, что запрос новый, нужно создать его с нуля
**-nodes  — отключает шифрование закрытого ключа (чтобы ключ сохранялся в открытом виде, без пароля в начале файла)
**-key  — указывает путь к закрытому ключу (private/1c_priv.key)
**-sha256  — задаёт алгоритм хеширования (SHA-256) для подписи
**-days 3650  — срок действия сертификата в днях
**-out  — путь, куда сохранить итоговый сертификат (./certs/1c_cert.crt).
**-subj  — задаёт субъект сертификата в виде строки (в нашем случае — путь к организации и её названию в формате DN)

openssl x509 -in ./certs/1c_cert.crt -text -nooutКоманда проверки выпущенного подписанного сертификата
**x509 говорит об используемой версии стандарта X.509 (в нашем случае это v3)
**-in ./certs/1c_cert.crt : указывает файл с сертификатом, который нужно обработать
**-text : говорит OpenSSL вывести содержимое в текстовом формате, а не в бинарном
**-noout : предотвращает вывод самого закодированного бинарного сертификата — только текстовое представление тех частей, которые заданы другими опциями
В выводе будет содержаться:
    • Version: Показывает версию стандарта X.509 (в нашем случае это v3).
    • Serial Number: Уникальный серийный номер сертификата — помогает отслеживать его в системе. 
    • Signature Algorithm: Алгоритм подписи (например, RSA with SHA-256) и идентификатор используемого ключа (Key Identifier). 
    • Issuer: Кто выдал сертификат (организация, центр сертификации и т.п.). 
    • Validity: Даты начала и окончания действия сертификата (notBefore и notAfter). 
    • Subject: Кто является владельцем сертификата — здесь много деталей в формате «поле=значение» (CN — Common Name, O — Organization, email и др.). 
    • Subject Public Key: Параметр SubjectPublicKeyInfo — это открытый ключ сертификата (его можно использовать для шифрования), закодированный в определённом формате (например, Subject Public Key Info (RSA)).
    • Extensions: Дополнительные поля (если есть), которые добавляют дополнительную информацию (например, Key Usage, Extended Key Usage). 
    • Authority Key Identifier: Если в цепочке есть промежуточные сертификаты, здесь может быть указан отпечаток (hash) публичного ключа центра сертификации, чтобы система могла проверить подпись внутри цепочки. 
openssl genpkey -algorithm RSA -out ./private/docsign_1c.key -aes256
Команда для создания сертификата для подписи документов в 1С
openssl req -new -key ./private/docsign_1c.key -out docsign.csr -subj "/C=RU/ST=Moscow/L=Moscow/O=Company_Russiya/OU=IT/CN=Company_RUS"
Создание запроса на подпись (CSR )ранее выданным ключем, находящемся в ./private/docsign_1c.key
openssl  x509 -req -in docsign.csr -CA ./certs/1c_cert.crt -CAkey ./private/1c_priv.key -CAcreateserial -out ./certs/docsign.crt -days 730 -sha256 -extfile <(printf "[alt_names]\nkeyUsage=digitalSignature, nonRepudiation\nextendedKeyUsage=codeSigning")
Команда подписи своим УЦ ключем

openssl x509 -in ./certs/docsign.crt -text -nooutКоманда проверки подписанного сертификата

cp ./certs/1c_cert.crt /etc/pki/ca-trust/source/anchors/1c_cert.crtКоманда копирования файла сертификата в папку хранения сертификатов системы

update-ca-trustКоманда обновления списка используемых системой сертификатов, для применения принятия сертификатов УЦ

openssl verify -CAfile ./certs/1c_cert.crt ./certs/docsign.crtКоманда проверки рабочего сертификата на соответствие с подписью ключем

Оффлайн Nicom

  • Участник
  • *
  • Сообщений: 1 303
**-days 3650  — срок действия сертификата в днях
3653 за 10 лет может пройти до 3 високосных годов.

Оффлайн rits

  • Участник
  • *
  • Сообщений: 1 464
  • ITS
Посмотри в сторону easyrsa3 - это своего рода консольный УД. который можно завернуть в web морду если ты программист, а можно и консольно вести, если память хорошая )
Я делал инструкцию УЦ для openvpn. Данная программа создает структуру каталогов, ведет валидность (списки отзыва) сертификатов, подписывает новые и продлевает старые. Ведет простенькую текстовую базу данных.
У альтов вроде готовый альтератор с УЦ имелся, только одно дело с сертификатами разбираться, а другое изучать чужие "фантазии" в веб формах по принцыпу  "что ты имела в виду" )

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 445
    • Домашняя страница
Андрей Черепанов (cas@)

Оффлайн akelot

  • Участник
  • *
  • Сообщений: 75
Для таких целей очень удобен XCA