3

私は署名されたデータの送信を伴うこのプロジェクトを行ってきました。

.pem ファイルとサーバー証明書が提供されており、これらのファイルを使用してデータに署名し、署名されたデータを別のサーバーに送信して検証および処理する必要がある別のサーバーにインポートすることになっています。

私の質問は次のとおりです。

  • これら 2 つのファイルをサーバーにインポートするにはどうすればよいですか?
  • 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);

以下のようにスクリプトを実行しようとするとエラーが発生します 「/S2YUeaABL1sO3rk4HhjyDSMIJoc91n..... の近くの (eval 30) 行 4 でオペレーターが期待する場所に Bareword が見つかりました。.....

.pem ファイルの内容には、ファイル内にスラッシュがあり、これらの問題を引き起こしていることに注意してください。サンプルを見る

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

2 に答える 2

2
  1. Read Import Certificates and Private Key with Copy and Paste

  2. RSA sign in Perl (untested code):

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

Good luck!

于 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 に答える