2012-06-14 6 views
1

나는 서명 된 데이터를 보내는 것을 포함하는이 프로젝트를 수행했다.Perl을 사용한 데이터 서명

필자는 .pem 파일과이 파일을 사용하여 데이터에 서명해야하는 다른 서버로 가져온 서버 인증서를 제공받은 다음 서명 된 데이터를 다른 서버로 보내 인증 확인을 처리해야합니다 .

내 질문은 다음과 같습니다

  • 가 어떻게 내 서버에이 두 파일을 가져 옵니까?
  • 파일을 사용하여 데이터에 서명하는 방법은 무엇입니까?

참고로 리눅스 (수세)를 가져옵니다.

내가에 .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); 

내가 (평가 30) 라인 4, 근처 "/ S2YUeaABL1sO3rk4HhjyDSMIJoc91n에서 예상 운영자가 .....

내가 언급 한 발견 bareword는 아래와 같이 스크립트를 실행하려고 할 때이 오류가 발생할 수 있다는 .PEM 파일의 내용 이 문제를 일으키는 파일 내에 슬래시가 있습니다. se 전자 샘플

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

내 질문은 : 당신은 무엇을 지치셨습니까? 어디서 문제가 있었습니까? –

+0

내가 지금까지 한 것을 수정 한 내용보기 – Gatonye

답변

1
  1. 읽기 Import Certificates and Private Key with Copy and Paste

  2. 펄에서 RSA 기호 (테스트되지 않은 코드를)

    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

고마워 현재 많이 사용되고 있습니다. 귀하의 예를 약간 수정 한 상태에서 다음과 같이 사용했습니다.

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, ''); 
관련 문제