2009-09-28 6 views
1

PHP를 사용하여 보내는 전자 메일에 "서명"하는 방법은 무엇입니까?PHP의 "서명 된"이메일

내가보고하고 적절한 헤더는 다음과 같습니다

signed-by mydomain.com 
+0

정확히 원하는 것을 설명하십시오. 서명 된 헤더를 원할뿐 아니라 도메인 키 또는 이와 비슷한 것을 원합니다. –

답변

3

난 당신이 PHP를 사용하여 서명 된 전자 메일을 생성하려면, 제대로 이해합니다.

서명 된 전자 메일을 보내는 표준 방법은 S/MIME입니다 (다른 일반적인 방법은 PGP입니다). S/MIME은 기본적으로 CMS 메시지의 base64 인코딩을 포함하는 MIME 메시지입니다 (CMS는 때로는 PKCS # 7이라고도 함).

PHP에서이 작업을 수행하는 한 가지 방법은 OpenSSL의 openssl_pkcs7_sign에 대한 PHP 바인딩을 사용하는 것입니다.

내가 서명 한 헤더를 사용해야하는지 잘 모르겠습니다. 당신이 .P12 파일이있는 경우

+0

감사합니다. 정확히 제가 필요한 것입니다! : D –

+0

이러한 헤더가 필요한 이유는 다음과 같습니다. https://support.google.com/mail/answer/180707?hl=ko –

0

당신은 아마 그것에서 공용 인증서 및 개인 키를 추출해야합니다

개인 키 :

openssl pkcs12 -in <YOUR_FILE>.p12 -nocerts -out privateKey.pem 

공공 CERT는 :

openssl pkcs12 -in <YOUR_FILE>.p12 -clcerts -nokeys -out publicCert.pem 

그런 다음이 PHP 코드로 서명 된 이메일을 보낼 수 있습니다.

<?php 

$data = "This is a test signed email"; 

// create a temporary file 
$fp = fopen("msg.txt", "w"); 
fwrite($fp, $data); 
fclose($fp); 


// sign the email 
openssl_pkcs7_sign("msg.txt", "signed.txt", 
    file_get_contents(realpath("publicCert.pem")), 
    array(file_get_contents(realpath("privateKey.pem")), '<YOUR_PASS>'), 
    array(
     "To" => "[email protected]", 
     "From: Jane Doe <[email protected]>", 
     "Subject" => "This is a test" 
     ) 
    ); 



exec(ini_get("sendmail_path") . " < signed.txt");