2014-10-31 116 views
1

此問題是my last question的擴展。在Perl中處理x509客戶端證書(進一步處理)

基本上最後一個問題問如何獲得證書到Perl和香港專業教育學院做到了與Web::ID包..

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

我驗證了這個工程通過調用blessed($webid)Dumper($webid)

然而,我仍然不能撥打$webid->uri,這是我應該設置的屬性。事實上,我不能打電話以外的任何其他屬性$webid->certificate

所以基本上我仍然無法解析SAN。

EDIT

所以現在直接使用Web::ID::Certificate包我可以通過SAN陣列直接循環。

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

所以我的問題是回答..但是...我還在迷茫...... 我想我不明白爲什麼Web::ID的設定uri心不是?

爲什麼我的$webid的屬性沒有被設置?

EDIT2在tobyink的要求:

$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

您是否100%確定證書是爲[WebID](http://www.w3.org/2005/Incubator/webid/spec/tls/)正確設置的?並非所有的x509證書都是。如果您發佈PEM文件,我很樂意檢查。 (請記住,這只是公鑰的一部分,因此不應該有任何公開發布的安全問題。) – tobyink 2014-10-31 12:04:27

+0

是的,這是正確的我可以使用webid登錄到freinds站點。我也在 - > https://auth.my-profile.eu/auth/index.php?verbose=on – 2014-10-31 13:24:57

+0

中檢查過它,在成功創建引用'$ webid'後,對除'certificate'之外的任何屬性的任何調用使腳本崩潰。 – 2014-10-31 13:34:50

回答

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 – 2014-11-01 01:59:33

0

具體的問題是沒有安裝「RDF :: RDFa :: Parser」。

cpan install RDF::RDFa::Parser解決了我的問題。