使用PHP从.p12文件中读取所有者证书数据

时间:2016-04-14 10:15:34

标签: php client-certificates php-openssl

我试图通过PHP获取证书的所有者信息。 我有.p12文件,当尝试使用openssl PHP个函数阅读信息时:

if (getenv('HTTPS')=='on'){ 
           $cert=$_SERVER['SSL_CLIENT_CERT']; 
         }else{ 
            $fname = "certname.p12";
            $f = fopen($fname, "r"); 

            $cert = fread($f, filesize($fname)); 
            fclose($f); 
         }  
        $certdata = array();
        $pass = "pass";

        openssl_pkcs12_read($cert, $certdata, $pass);

        print_r($certdata);

我获得了三个加密字段:

['cert']
['pkey']
['extracerts']['0']

如何以纯文本格式阅读电子邮件字段?

由于

2 个答案:

答案 0 :(得分:1)

通过以下方式解决:

之后

 openssl_pkcs12_read($cert, $certdata, $pass);

待办事项

 $certdata= openssl_x509_parse($certdata['cert'],0);

感谢所有

答案 1 :(得分:0)

我还有其他方法来获取证书值

if (openssl_pkcs12_read($almacén_cert, $info_cert, $request->password))
    {
        $pkey = $info_cert['pkey'];  //private key
        $cert = $info_cert['cert'];  //public key

        $certdata= openssl_x509_parse($info_cert['cert'],0);

        return  $certdata; // base64_decode($info_cert['extracerts'][0]);


    } else {
        return "Error.";
    }

我在Laravel中使用了