Edit report at https://bugs.php.net/bug.php?id=64802&edit=1

 ID:                 64802
 Comment by:         mark at zedwood dot com
 Reported by:        mark at zedwood dot com
 Summary:            openssl_x509_parse fails to parse subject properly
                     in some cases
 Status:             Open
 Type:               Bug
 Package:            OpenSSL related
 Operating System:   Ubuntu Linux
 PHP Version:        5.4.15
 Block user comment: N
 Private report:     N

 New Comment:

There was a bug in the last patch I submitted.  I replaced it with a new patch, 
everything should be good now.  It was a patch to php 5.5.1


Previous Comments:
------------------------------------------------------------------------
[2013-05-15 15:45:56] zelnaga at gmail dot com

As a workaround until PHP fixes this issue you can use phpseclib, a pure PHP 
X.509 implementation. eg.

<?php
include('File/X509.php');

$x509 = new File_X509();
$cert = $x509->loadX509('...'); // see google.crt

print_r($cert);
print_r($x509->getSubjectDN());
?>

getSubjectDN takes an optional $format parameter that can be one of the 
following:

FILE_X509_DN_ARRAY (this is the default value)
FILE_X509_DN_STRING
FILE_X509_DN_ASN1
FILE_X509_DN_OPENSSL
FILE_X509_DN_CANON
FILE_X509_DN_HASH

------------------------------------------------------------------------
[2013-05-09 16:49:07] mark at zedwood dot com

Description:
------------
When the subject of the certificate has multiple CN (common name) values in the 
subject, openssl_x509_parse seems to work, but in this case it fails to parse 
the rest of the subject as well as additional CN values.

Here is the subject of the cert triggering the failure
cat cert.pem |openssl x509 -noout -text |grep Subject:
Subject: CN=www.rd.io, CN=rdio.com, CN=rd.io, CN=api.rdio.com, 
CN=api.rd.io/serialNumber=4586007/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/businessCategory=Private
 Organization, C=US/postalCode=94103, ST=CA, L=San Francisco/street=1550 Bryant 
st, O=Rdio, Inc., OU=COMODO EV Multi-Domain SSL, CN=www.rdio.com

The cert.pem I used can be found in the embedded php script: 
http://pastebin.com/dppuUWVq

Test script:
---------------
http://pastebin.com/dppuUWVq

Expected result:
----------------
Array
(
    [CN] => Array(
        [0] => www.rdio.com
        [1] => api.rd.io
        [2] => api.rdio.com
        [3] => rd.io
        [4] => rdio.com
        [5] => www.rd.io
    )
    [OU] => COMODO EV Multi-Domain SSL
    [O] => Rdio, Inc
    [street] => 1550 Bryant st
    [L] => San Francisco
    [ST] => CA
    [postalCode] => 94103
    [C] => US
    [businessCategory] => Private Organization
    [1.3.6.1.4.1.311.60.2.1.2] => Delaware
    [1.3.6.1.4.1.311.60.2.1.3] => US
    [serialNumber] => 4586007
)

Actual result:
--------------
Array
(
    [CN] => Array
        (
            [0] => www.rd.io
            [1] => rdio.com
            [2] => rd.io
            [3] => api.rdio.com
            [4] => api.rd.io
            [5] => www.rdio.com
        )
)



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=64802&edit=1

Reply via email to