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 № 1Ler Importar Certificados e Chave Privada com Copiar e Colar
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, "");