Как сформировать CMS PKCS подпись файлов на Ruby on Rails? Добрый день, подскажите пожалуйста как правильно подписывать файлы, XML на Ruby on Rails Openssldef create
@company = Company.find(params[:company_id])
@message = @company.messages.build(mess_params)
@message.uploads.select { |item|
item.sign_file = signFile(Paperclip.io_adapters.for(item.uploaded_file).read, request.session_options[:id].to_s)
}
@message.save
enddef signFile(data, id_session)
value = nil
keyname = 'keyp12'+id_session
p12 = OpenSSL::PKCS12.new( Rails.cache.fetch(keyname).p12_file)
value = OpenSSL::PKCS7::sign(p12.certificate, p12.key, data, [], OpenSSL::PKCS7::DETACHED)
end
return value.to_pem
end
возвращает сертификат, не пойму что с ним дальше делать, как сделать подпись CMS или PKCS#7?
проверки сертификата на отзыв проходят по другим action'ам
Нужна юридически легитимная подпись и OCSP штамп времени

21 Авг 2019 в 07:12
165 +1
1
Ответы
1

Для создания CMS (PKCS#7) подписи файла на Ruby on Rails с использованием OpenSSL, вы можете воспользоваться следующим кодом:

def create
@company = Company.find(params[:company_id])
@message = @company.messages.build(mess_params)
@message.uploads.select { |item|
item.sign_file = signFile(Paperclip.io_adapters.for(item.uploaded_file).read, request.session_options[:id].to_s)
}
@message.save
end
def signFile(data, id_session)
value = nil
keyname = 'keyp12' + id_session
p12 = OpenSSL::PKCS12.new(Rails.cache.fetch(keyname).p12_file)
value = OpenSSL::PKCS7::sign(p12.certificate, p12.key, data, [], OpenSSL::PKCS7::DETACHED)
return value.to_pem
end

Этот код открывает файл в виде данных, затем использует ключ и сертификат из .p12 файла для создания подписи в формате PKCS#7 (CMS).

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

Чтобы такая подпись была юридически легитимой, рекомендуется также добавить OCSP штамп времени (Online Certificate Status Protocol timestamp) к подписи. Для этого у вас должен быть доступ к OCSP серверу, который будет возвращать статус вашего сертификата.

После создания подписи с штампом времени, вы можете использовать её для подтверждения подлинности файла и хранить дополнительную информацию о его создании и статусе.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир