Как сформировать 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 штамп времени
Этот код открывает файл в виде данных, затем использует ключ и сертификат из .p12 файла для создания подписи в формате PKCS#7 CMSCMSCMS.
Для дальнейших действий с подписью, вы можете сохранить результат в файл или передать его для дальнейшей обработки.
Чтобы такая подпись была юридически легитимой, рекомендуется также добавить OCSP штамп времени OnlineCertificateStatusProtocoltimestampOnline Certificate Status Protocol timestampOnlineCertificateStatusProtocoltimestamp к подписи. Для этого у вас должен быть доступ к OCSP серверу, который будет возвращать статус вашего сертификата.
После создания подписи с штампом времени, вы можете использовать её для подтверждения подлинности файла и хранить дополнительную информацию о его создании и статусе.
Для создания 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 серверу, который будет возвращать статус вашего сертификата.
После создания подписи с штампом времени, вы можете использовать её для подтверждения подлинности файла и хранить дополнительную информацию о его создании и статусе.