Как сформировать 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
191 +1
1
Ответы
1

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

def create
@company = Company.findparams[:companyid]params[:company_id]params[:companyi d] @message = @company.messages.buildmessparamsmess_paramsmessp arams @message.uploads.select { |item|
item.sign_file = signFilePaperclip.ioadapters.for(item.uploadedfile).read,request.sessionoptions[:id].tosPaperclip.io_adapters.for(item.uploaded_file).read, request.session_options[:id].to_sPaperclip.ioa dapters.for(item.uploadedf ile).read,request.sessiono ptions[:id].tos }
@message.save
end
def signFiledata,idsessiondata, id_sessiondata,ids ession value = nil
keyname = 'keyp12' + id_session
p12 = OpenSSL::PKCS12.newRails.cache.fetch(keyname).p12fileRails.cache.fetch(keyname).p12_fileRails.cache.fetch(keyname).p12f ile value = OpenSSL::PKCS7::signp12.certificate,p12.key,data,[],OpenSSL::PKCS7::DETACHEDp12.certificate, p12.key, data, [], OpenSSL::PKCS7::DETACHEDp12.certificate,p12.key,data,[],OpenSSL::PKCS7::DETACHED return value.to_pem
end

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

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

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

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

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир