3

我一直是这个涉及发送签名数据的项目。

我已经获得了一个 .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);

当我尝试运行如下脚本时出现错误 Bareword 在 (eval 30) 第 4 行,靠近“/S2YUeaABL1sO3rk4HhjyDSMIJoc91n .....

我注意到 .pem 文件的内容在导致这些问题的文件中有斜杠。见样品

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

2 回答 2

2
  1. 通过复制和粘贴读取导入证书和私钥

  2. RSA 登录 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);
    

祝你好运!

于 2012-06-14T15:46:22.863 回答
0

非常感谢它现在正在工作。我用你的例子稍作修改如下

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, '');
于 2012-06-15T07:45:19.890 回答