2014-10-31 5 views
1

이 질문은 my last question의 확장입니다.Perl에서 x509 클라이언트 인증서 처리 (추가 처리)

는 기본적으로 마지막 질문은 펄에 인증서를 취득하고 Web::ID 패키지와 함께 ..

my $webid = Web::ID->new(certificate => $ENV{SSL_CLIENT_CERT});

내가이 그러나 blessed($webid)Dumper($webid)

를 호출하여 작동 확인하는 것이 수행 필자 방법을 묻는 나는 나를 위해 설정되어 있어야만하는 속성 인 $webid->uri을 여전히 호출 할 수 없다. 실제로 나는 어떤 속성이라도 $webid->certificate이라고 부르지 않는다

그래서 나는 아직도 SAN을 해석 할 수 없다.

EDIT 이제 직접 나가 SAN 어레이를 통해 직접 루프 Web::ID::Certificate 수있는 패키지를 사용.

my $cert = Web::ID::Certificate->new(pem => $ENV{SSL_CLIENT_CERT}); foreach (@{ $cert->subject_alt_names }) { print "SAN: ", $_->type, " = ", $_->value; }

그래서 제 질문은 ... 임 여전히 혼란 .. 대답하지만 ...된다 나는 내가 Web::IDuri 밤은이 설정되는 이유를 이해 해달라고 추측 ?

$webid의 속성이 설정되지 않은 이유는 무엇입니까? tobyink의 요청에

EDIT2 : 나를 위해

$VAR1 = bless({ 'certificate' => bless({ 'pem' => '-----BEGIN CERTIFICATE----- MIIDlzCCAn+gAwIBAgIJAI6PdfUNmz5oMA0GCSqGSIb3DQEBCwUAMEgxCzAJBgNV BAYTAlhYMREwDwYDVQQHDAhJbnRlcm5ldDEQMA4GA1UECgwHQml0bWFyazEUMBIG A1UEAwwLbGVhdGhhbi5uZXQwIBcNMTQxMDMxMTI1NjAzWhgPMjExNDEwMDcxMjU2 MDNaMEgxCzAJBgNVBAYTAlhYMREwDwYDVQQHDAhJbnRlcm5ldDEQMA4GA1UECgwH Qml0bWFyazEUMBIGA1UEAwwLbGVhdGhhbi5uZXQwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQCna/Lvihx5nD3LbjfLo0vDIQkkSR6u/bKbwm346VJBVRh6 /K5gHM19os7ZeNp8GlArl0OGtF5QSf+TGHt0hD8RtgACJumdn/oATYGvGfdwnLu0 vUD9XHc6wzl+thvp7cT1Dw8BtEvUi+e4UBpIJMXCJkMt+Er23Mn288EbSGsC8q1u ga6Vp4toX4/fSuDEHAlEGeVhWCJfHy26lpaHPPuLTUfr1/8b1TiYI19rit4HK/wS MfKfXkLXc2a+Clr+/girqa60Q9zXP0GjQRawZ/B8WHVKBkE3DqOp/jEtEytS7Ojv 2ieylYT+/IhiQgqVS6CgE6vZ65PRzuQOItFoNaV7AgMBAAGjgYEwfzAvBgNVHREE KDAmhhVodHRwOi8vbGVhdGhhbi5uZXQvI2mBDTFAbGVhdGhhbi5uZXQwHQYDVR0O BBYEFIBUZ3r+B/dc900RyvhlVXq4Znf9MB8GA1UdIwQYMBaAFIBUZ3r+B/dc900R yvhlVXq4Znf9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAE/adF6C MJHoh1IxnwrvPLZ0S66XD0xPHlQ6ZKvuKqTX2nakf7vXaSzFCkoXJ6Vbv19NXpqZ 28jRBCgv0rszT8ODICApp65XsFc67w5S2/+soIDKs3ZLuKBPvRu6x7cPIeSDfj2J w6fQ9dXOSzUmdPCoorudrW+L/CmKI8Tn2I2KQah6p9HGh0/XnxXob0kGkGeJF5sR WOLQOUT+HpEjAy3Eeu1nygxqscaTESKv+0hLV7yHHzJl9TJRFbNw4zYzU3h8t8M+ pSu3SD4YC3HixmZarz7fV36zWaAxJBHRtBkbOwgOMBY4wzfpMPPV4fQ61Qio8DLR lN7nzvuQD+BA4OQ= -----END CERTIFICATE----- ' }, 'Web::ID::Certificate') }, 'Web::ID');

+0

[WebID] (http://www.w3.org/2005/Incubator/webid/spec/tls/)에 대한 인증서가 올바르게 설정되었는지 100 % 확신합니까? x509 인증서가 전부는 아닙니다. PEM 파일을 게시하면 확인해 드리겠습니다. (공개적으로 게시하는 보안 문제는 없어야합니다.) – tobyink

+0

맞습니다. webid를 사용하여 freinds 사이트에 로그인 할 수 있습니다. 나는'https://auth.my-profile.eu/auth/index.php?verbose=on –

+0

에서 '$ webid' 참조를 성공적으로 생성 한 후에 그것을 확인했다. 스크립트를 중단시킵니다. –

답변

2

작품.

use strict; 
use warnings; 
use Web::ID; 

printf "%s: %s\n", $_, $_->VERSION for qw(
    Web::ID 
    Crypt::X509 
    RDF::RDFa::Parser 
    RDF::Trine 
    RDF::Query 
); 

print Web::ID->new(certificate => <<'END')->uri, "\n"; 

    -----BEGIN CERTIFICATE----- 
    MIIDlzCCAn+gAwIBAgIJAI6PdfUNmz5oMA0GCSqGSIb3DQEBCwUAMEgxCzAJBgNV 
    BAYTAlhYMREwDwYDVQQHDAhJbnRlcm5ldDEQMA4GA1UECgwHQml0bWFyazEUMBIG 
    A1UEAwwLbGVhdGhhbi5uZXQwIBcNMTQxMDMxMTI1NjAzWhgPMjExNDEwMDcxMjU2 
    MDNaMEgxCzAJBgNVBAYTAlhYMREwDwYDVQQHDAhJbnRlcm5ldDEQMA4GA1UECgwH 
    Qml0bWFyazEUMBIGA1UEAwwLbGVhdGhhbi5uZXQwggEiMA0GCSqGSIb3DQEBAQUA 
    A4IBDwAwggEKAoIBAQCna/Lvihx5nD3LbjfLo0vDIQkkSR6u/bKbwm346VJBVRh6 
    /K5gHM19os7ZeNp8GlArl0OGtF5QSf+TGHt0hD8RtgACJumdn/oATYGvGfdwnLu0 
    vUD9XHc6wzl+thvp7cT1Dw8BtEvUi+e4UBpIJMXCJkMt+Er23Mn288EbSGsC8q1u 
    ga6Vp4toX4/fSuDEHAlEGeVhWCJfHy26lpaHPPuLTUfr1/8b1TiYI19rit4HK/wS 
    MfKfXkLXc2a+Clr+/girqa60Q9zXP0GjQRawZ/B8WHVKBkE3DqOp/jEtEytS7Ojv 
    2ieylYT+/IhiQgqVS6CgE6vZ65PRzuQOItFoNaV7AgMBAAGjgYEwfzAvBgNVHREE 
    KDAmhhVodHRwOi8vbGVhdGhhbi5uZXQvI2mBDTFAbGVhdGhhbi5uZXQwHQYDVR0O 
    BBYEFIBUZ3r+B/dc900RyvhlVXq4Znf9MB8GA1UdIwQYMBaAFIBUZ3r+B/dc900R 
    yvhlVXq4Znf9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAE/adF6C 
    MJHoh1IxnwrvPLZ0S66XD0xPHlQ6ZKvuKqTX2nakf7vXaSzFCkoXJ6Vbv19NXpqZ 
    28jRBCgv0rszT8ODICApp65XsFc67w5S2/+soIDKs3ZLuKBPvRu6x7cPIeSDfj2J 
    w6fQ9dXOSzUmdPCoorudrW+L/CmKI8Tn2I2KQah6p9HGh0/XnxXob0kGkGeJF5sR 
    WOLQOUT+HpEjAy3Eeu1nygxqscaTESKv+0hLV7yHHzJl9TJRFbNw4zYzU3h8t8M+ 
    pSu3SD4YC3HixmZarz7fV36zWaAxJBHRtBkbOwgOMBY4wzfpMPPV4fQ61Qio8DLR 
    lN7nzvuQD+BA4OQ= 
    -----END CERTIFICATE----- 

END 

그것은 다음과 같은 출력을 생성합니다 :

당신은이 모듈의 최신 버전을 가지고있는 경우에
Web::ID: 1.927 
Crypt::X509: 0.51 
RDF::RDFa::Parser: 1.097 
RDF::Trine: 1.010 
RDF::Query: 2.912 
http://leathan.net/#i 

하면, 당신은 잘 해야을 나는이 작은 스크립트를 작성했습니다 .

+0

정말 고맙습니다. 원래 질문의 코드 (예 :'$ webid-> uri')를 포함하여 모두 작동합니다. 'RDF ::'패키지를 설치했거나 올바른 버전으로 만들지 않았기 때문에 생각했습니다. 그것은 나에게 이상하게 보입니다 ...하지만 그것을 설치 한 후, 어쨌든 감사합니다 .. 그리고 멋진 코딩 스타일 : P는 –

0

"RDF :: RDFa :: Parser"가 설치되지 않은 특정 문제가있었습니다.

cpan install RDF::RDFa::Parser 내 문제가 해결되었습니다.