2017-09-19 1 views
2

어떻게 PHP로 파일에 서명 할 수 있는지 알고 싶습니다. XML 파일에 서명해야합니다. 고정PHP에서 public x509 인증서에 서명하기

$data->save("test.xml"); 

$signature; 
$pkeyid = openssl_pkey_get_public("./public.cer"); 
$path = 'test.xml'; 
openssl_sign($path, $signature, $pkeyid); 
openssl_free_key($pkeyid); 

:

Warning: openssl_sign(): supplied key param cannot be coerced into a private key in C:\xampp\htdocs\test\index.php on line 35

Warning: openssl_free_key() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\index.php on line 38

코드는이 하나입니다 : 나는이 코드 조각을 실행있을 때, 그것은 나에게 다음과 같은 오류 제공 확인을, 그래서 난 사실에 대해 오해가 있었다 공용 인증서로 데이터에 서명해야하며 데이터를 제대로로드하지 못했습니다. 나는 그것을 바꿨고 그것은 작동했다 :) 내가 사용한 기능은 다음과 같다.

$ pkeyid = openssl_pkey_get_private (file_get_contents ('./ private.key')));

+0

설명서에 좋은 예가 있습니다. http://php.net/manual/en/function.openssl-sign.php#example-967 –

+0

개념이 잘못되었습니다. 공개 키를 사용하여 데이터를 검증 * –

답변

1

"./public.cer"경로가 가장 오류 일 수 있습니다. 대신에 절대 경로를 사용하십시오. 두 번째 경고는 $ pkeyid가 부울 (boolean)이라는 것입니다. openssl_pkey_get_public()이 오류를 반환하는 것과 정확히 같습니다.

+0

내 인증서가 C :/xampp/htdocs/test에 있으면 어떻게 써야하나요? –

+0

file : // C : /xampp/htdocs/test/public.cer – pucky124

+0

StackOverflow에 오신 것을 환영합니다.이 링크를 통해 커뮤니티에 대해 자세히 알아보십시오. https://meta.stackexchange.com/questions/126180/is- 쓸만한 의견을 쓰는 것만으로도 충분하다. – pucky124

관련 문제