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