/ Assinaturas de dados usando Perl - perl, assinatura digital, certificado digital

Assinaturas de dados usando Perl - perl, assinatura digital, certificado digital

Eu tenho sido este projeto que envolve o envio de dados assinados.

Eu fui fornecido com um.pem arquivo e um certificado de servidor que eu deveria para importar para outro servidor a partir do qual eu deveria assinar os dados usando esses arquivos e, em seguida, enviar os dados assinados para outro servidor para verificação e processamento.

Minhas perguntas são:

  • Como eu importo esses dois arquivos para o meu servidor?
  • Como uso o perl para usar os arquivos para assinar os dados?

Para observar, devo importar para um linux (Suse).

Isso é o que eu fiz até agora Eu adicionei o arquivo .pem ao / etc / ssl Estou usando o código abaixo para ler o arquivo .pem e assino os dados

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);

Recebo erros quando tento executar o script como abaixo Bareword encontrado onde o operador esperava em (eval 30) linha 4, perto de "/ S2YUeaABL1sO3rk4HhjyDSMIJoc91n .....

Eu observei que o conteúdo do arquivo .pem tem barras no arquivo que está causando esse problema. veja a amostra

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCMdoWd+LEk22TMaEihLqwl8tJtuFzndJ8dTGrLw6twjfAeV0sg
PsDQbVu5/S2YUeaABL1sO3rk4HhjyDSMIJoc91nfE3kYueRxEA9eL5JlxPDg2Z3s

Respostas:

1 para resposta № 1
  1. Ler Importar Certificados e Chave Privada com Copiar e Colar

  2. RSA assina em Perl (código não testado):

    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);
    

Boa sorte!


0 para resposta № 2

Muito obrigado agora está funcionando. Eu usei o seu exemplo com uma ligeira modificação como abaixo

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, "");