2017-10-05 18 views
0

openssl을 사용하여 cert에 서명하는 것이 처음입니다. 위의 오류를 계속 치고 realpath()를 시도하고 file : //을 추가했지만 여전히 openssl을 사용하여 프로필에 서명 할 수 없습니다. 나는 이것이 어떻게 작동하는지 이해하지 못한다. 모든 통찰력은 인정 될 것이다.Openssl_pkcs7_sign() : 파일을 여는 중 오류가 발생했습니다.

편집 1 : 어떤 파일이 문제인지 확실하지 않습니다. 오류 메시지가 구체적이지 않았습니다. 알 수있는 방법이 있습니까?

코드 아래 스크린 샷 :

function signProfile() 
{ 
    $filename = "./template.mobileconfig"; 
    $filename = realpath($filename); 
    $outFilename = $filename . ".tmp"; 
    $pkey = dirname(__FILE__) . "/PteKey.key"; 
    $pkey = realpath($pkey); 
    $certFile = dirname(__FILE__) . "/CertToSign.crt"; 
    $certFile = realpath($certFile); 

    // try signing the plain XML profile 
    if (openssl_pkcs7_sign($filename, $outFilename, 'file://'.$certFile, array('file://'.$pkey, ""), array(), 0, "")) 
    { 
     // get the data back from the filesystem 
     $signedString = file_get_contents($outFilename); 
     // trim the fat 
     $trimmedString = preg_replace('/(.+\n)+\n/', '', $signedString, 1); 
     // convert to binary (DER) 
     $decodedString = base64_decode($trimmedString); 
     // write the file back to the filesystem (using the filename originally given) 
     $fh = fopen($filename, 'w'); 
     fwrite($fh, $decodedString); 
     fclose($fh); 
     // delete the temporary file 
     unlink($outFilename); 
     return TRUE; 
    } 
    else 
    { 
     return FALSE; 
    } 
} 
+0

이 날 오후 주시기 바랍니다. :) – f0rfun

답변

0
  1. openssl_pkcs7_sign ($ mobileConfig, $ tmpMobileConfig, $ certFile, 배열 ($의 PKEY, "") 사용하지 않을 경우 원치 않는 필드를 제거, 정렬());

  2. 파일 경로가 올바르게 제공되었는지 확인하십시오. 이 같은 문제에 부딪 경우

    require_once('variables.php'); //stores abs path to $tmpMobileConfig/$pteKeyPath/$CertToSignPath 
    $prepend = "file://"; 
    $mobileConfig = realpath("./template.mobileconfig"); 
    $pkey = $prepend . $pteKeyPath; 
    $pkey = str_replace('\\', '/', $pkey); 
    $certFile = $prepend . $CertToSignPath; 
    $certFile = str_replace('\\', '/', $certFile); 
    $isSignedCert = openssl_pkcs7_sign($mobileConfig, $tmpMobileConfig, $certFile, array($pkey, ""), array());