Я був цим проектом, який передбачав надсилання підписаних даних.
Мені було надано a.pem-файл та сертифікат сервера, який я повинен імпортувати на інший сервер, з якого я повинен підписати дані за допомогою цих файлів, а потім надіслати підписані дані на інший сервер для перевірки та обробки.
Мої запитання:
- Як імпортувати ці два файли на мій сервер?
- Як використовувати perl для використання файлів для підписання даних?
Зверніть увагу, я повинен імпортувати в Linux (Suse).
Це те, що я зробив до цих пір Я додав файл .pem до / etc / ssl Я використовую код нижче для читання з файлу .pem, а потім підписую дані
my $rsa = new Crypt::RSA;
my $file = "path to file";
my $key = new Crypt::RSA::Key::Private( Filename => $file , Password => "*****");
my $signature = $rsa->sign(Message => $data, Key => $key, Armour => 0);
Я отримую помилки, коли намагаюся запустити скрипт, як показано нижче Барило знайдено, де очікується очікування оператора на рівні (eval 30) лінія 4, поблизу / S2YUeaABL1sO3rk4HhjyDSMIJoc91n .....
Я зазначив, що вміст файлу .pem має коси риси файлу, що спричиняє цю проблему. див. зразок
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCMdoWd+LEk22TMaEihLqwl8tJtuFzndJ8dTGrLw6twjfAeV0sg
PsDQbVu5/S2YUeaABL1sO3rk4HhjyDSMIJoc91nfE3kYueRxEA9eL5JlxPDg2Z3s
Відповіді:
1 для відповіді № 1Читайте Імпортуйте сертифікати та приватний ключ із копіюванням та вставкою
RSA Sign в Perl (непройденний код):
use Crypt::OpenSSL::RSA; use File::Slurp; my $keystring = read_file("private_key.pem"); my $private_key = Crypt::OpenSSL::RSA->new_private_key($keystring); $private_key->use_md5_hash(); # use_sha1_hash is the default my $signature = $private_key->sign($plaintext);
Удачі!
0 для відповіді № 2
Велике спасибі зараз працює. Я використовував ваш приклад з невеликою зміною, як показано нижче
use File::Slurp qw(read_file);
use MIME::Base64 qw(encode_base64);
require Crypt::OpenSSL::RSA;
my $keystring = read_file( "path to file name" );
my $privatekey = Crypt::OpenSSL::RSA->new_private_key($keystring);
$privatekey->use_pkcs1_padding();
my $signature = $privatekey->sign($datatosign);
print encode_base64($signature, "");