EG
key = OpenSSL::PKey.read(File.read(options.key_path), options.key_passphrase)
crt = OpenSSL::X509::Certificate.new(File.read(options.crt_path))
signed = OpenSSL::PKCS7.sign(crt, key, data, [], OpenSSL::PKCS7::DETACHED)
Выдает ошибку на вызове метода OpenSSL::PKCS7.sign:
undefined method `private?' for #<OpenSSL::PKey::PKey:0x00007f1ead69a320>
Т.е. похоже что приватный ключ не распознается, иначе был бы класс вида OpenSSL::PKey::RSA или что то в этом духе.
Все что удалось найти в интернете на этот счет очень древнее.
Это для esia гем omniauth-esia
https://github.com/Elsant/omniauth-esia
и нужно патчить либо гем openssl либо дефолтный в рубях. Настроено на двух проектах сейчас авторизация через есиа