2014-10-31 119 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解决了我的问题。