2014-01-23 5 views

답변

1

는 TLS

  • 인증서 다음 코드는 당신에게 모두를 제공해야합니다

TLS 연결 내부 대칭 암호화에 사용

  • 키의 공개 키에 관여하는 여러 개의 키가 있습니다 대칭 암호화에 사용되는 공개 키 및 암호의 비트 암호는 사용 된 알고리즘의 문자열로 주어지며, 유효한 키 길이는 알고리즘에 따라 다릅니다. 공개 키를 사용하면 유사합니다 (예 : 동일한 알고리즘이 사용되는 동안 키 길이를 비교할 수 있지만 RSA와 타원 곡선을 비교할 때 키 길이를 단순히 비교할 수는 없습니다.

    나를 위해
    use strict; 
    use warnings; 
    use IO::Socket::SSL; 
    
    my $cl = IO::Socket::SSL->new('www.google.com:443') or die $!; 
    my $cipher = $cl->get_cipher; 
    my $issuer = $cl->peer_certificate('issuer'); 
    my $pkey = Net::SSLeay::X509_get_pubkey($cl->peer_certificate); 
    my $bits = Net::SSLeay::EVP_PKEY_bits($pkey); 
    my $pkey_type = Net::SSLeay::OBJ_nid2sn(Net::SSLeay::EVP_PKEY_id($pkey)); 
    
    print "cipher: $cipher\n"; 
    print "cert: issuer=$issuer pkey=$pkey_type/$bits\n"; 
    

    이 코드를 반환 :

    cipher: ECDHE-RSA-RC4-SHA 
    cert: issuer=/C=US/O=Google Inc/CN=Google Internet Authority G2 pkey=rsaEncryption/2048 
    

    당신이 비 블로킹 TCP를 사용하여 최대의 코드를 속도를 수있는 짧은 시간에 웹 사이트를 많이 확인해야하는 경우 연결하고 나중에 비 SSL 핸드 셰이크를 차단하여 여러 대상을 동시에 처리합니다. 이 경우 IO :: Socket :: INET 및 IO :: Socket :: SSL의 문서를 참조하십시오.

  • 0

    당신은 Net::SSLeayVERIFY_PEER 콜백을 사용할 수 있습니다.

    use Net::SSLeay; 
    use Data::Dumper; 
    use strict; 
    
    # install the VERIFY callback 
    Net::SSLeay::set_verify ($ssl, Net::SSLeay::VERIFY_PEER, sub { 
        # get out what you want here 
        # (this is just an example to allow you to see what's available) 
        print Dumper(\@_); 
    }); 
    
    # make an HTTPS request 
    my ($page) = get_https('www.example.com', 443, '/'); 
    

    무엇을 제공하는지 확인하십시오. Net :: SSLeay는 또한 OpenSSL에서 여러 유형의 인증서 API를 구현하므로 많은 부분을 볼 수 있습니다.

    Dumper 줄을 원하는대로 바꿉니다. 어떤 경우

    my @domains; 
    Net::SSLeay::set_verify ($ssl, Net::SSLeay::VERIFY_PEER, sub { 
        push @domains, { 
        somekey  => $_[0]->{somekey}, 
        someotherkey => $_[0]->{someotherkey} 
        } 
    }); 
    

    그런 짓을 단지 기능에에 get_https에 전화를 넣어 확인하는 도메인의 배열의 각 요소에 대한 호출.

    목록 항목을 동시에 확인하기 위해 Parallel::ForkManager을 사용하여 여러 프로세스를 분리 할 수 ​​있습니다.