2011-11-25 6 views
0

서명 한 이메일을 보내면 사용자의 이메일 클라이언트가 신뢰할 수있는 메일 (예 : 썬더 버드에서 이메일이 닫힌 봉투 아이콘으로 표시되는 경우 등)을 표시 할 수 있습니다.PHP를 사용하여 서명 된 이메일 보내기

서명 된 전자 메일을 보내야하는 PHPMailer 라이브러리가 있지만 openssl_pkcs7_sign PHP 함수를 래핑한다고 생각합니다. 나는 무엇이 무엇인지, 그리고 함수의 주장 인 키와 인증서를 어떻게 얻고 사용할 지 확신하지 못한다. 매개 변수에는 $ signcert 및 $ privkey가 있습니다. 내가 이해하는 것으로부터 $ signcert는 메시지가 제대로 서명되었는지를 확인하기 위해 공개적으로 알려진 인증서 여야합니다. $ privkey는 인증서와 결합 된 것으로, 비밀로 유지되어야하며 전자 메일에 서명하는 데 사용됩니다. 지금까지 올바른가?

제 문제는 적절한 인증서를 얻는 방법입니다. 나는 OpenSSL이 내 자신의 인증서를 생성 할 수 있다고 생각하지만 내 요구 사항을 충족시킬 수있는 충분한 인증서가 있습니까? 그렇다면 제대로 생성하려면 어떻게해야합니까? 나는 다른 길이의 인증서와 중요 할 수있는 다른 옵션이있을 수 있고 내가 모르고 있음을 의미합니다. 그런데 "https"자체 서명 인증서가 브라우저에서 경고를 발생시키는 것으로 나타났습니다. 메일에서도 똑같은 일이 발생합니까? 이 경우에는 아마도 신뢰할 수있는 인증서 센터에서 인증서를 구입해야합니다. 내가 중심으로 삼아야 할 충고를 제게 줄 수 있습니까?

+1

http://kb.mozillazine.org/Getting_an_SMIME_certificate은 그냥 참고하시기 바랍니다 - 보안 이메일은 보편적으로 HTTPS는 달리 지원되지 않습니다. 이것은 대부분의 메일 시스템이 자동으로 메일 시스템을 지원하지 않기 때문에 (Outlook은 예를 들어 여전히 사용 가능한 상태로 제공되지 않음) 때문입니다. 대안으로, 당신은 [Hushmail] (http : //www.hushmail.co.kr /)은 일관되게이를 수행 할 수있는 중간 시스템을 제공합니다. 그러나 서버에 메일을 보내면 해당 서버 (사용자의 개인 인증서가 아닌)에서만 암호를 해독 할 수 있으므로 본질적으로 안전하지 않습니다. –

답변

1

여기 [1] 전자 메일 서명에 사용 된 인증서는 인증 기관에서 발급해야 함을 의미합니다 (따라서 전자 메일 클라이언트는 경고를 표시하지 않습니다). 무료 인증서를 발급하는 일부 기관의 목록은 여기 [2]에서 찾을 수 있습니다. 내가 선택한 인증서는 웹 브라우저에 직접 설치하여 인증서를 제공합니다. 따라서 더 많은 것을하기 위해서는 수출해야합니다. 대중적인 형식은 공개 키와 개인 키를 모두 저장할 수있는 * .p12 형식입니다. 하지만 PHP 함수 openssl_pkcs7_sign()을 사용하고 두 인증서가있는 파일에 인수를 지정해도 작동하지 않는 것 같습니다. OpenSSL은 모호한 오류 error:0906D06C:PEM routines:PEM_read_bio:no start line을 반환합니다. OpenSSL을 사용하여 키를 분리 한 후 서명이 정상적으로 작동합니다.

그러나 PHPMailer가 전자 메일을 노래 할 수 있다고해도 현재 버전은 작동하지 않습니다. 메일이 서명되어 임시 파일에 저장되고 파일이 삭제 된 후 파일 내용이 전송되므로 메시지가 비어 있습니다. [1]

-http://kb.mozillazine.org/Message_security

[2] -

2

OpenSSL을 사용하면 내 자신의 인증서를 생성 할 수 있지만 내 요구 사항을 충족시키는 데 충분한 인증서가 있습니까?

우리는 귀하의 필요를 모릅니다.

메시지 자체 서명은 메시지 서명에 쓸모가 없습니다. 이 값은 발신자와 수신자가 모두 수락 할 수있는 제 3자가 인증서를 인증 한 것입니다 (검증 가능). 이 제 3자는 인증 기관 (예 : Thawte, Verisign 등)이지만 조직 내에서 자체 CA를 제공하는 것으로 충분할 수 있습니다. OpenSSL 문서는 다른 인증서에 서명하는 데 사용할 수있는 자체 CA 인증서를 만드는 방법을 자세히 설명합니다.

코드를 구현하기 전에 오랜 학습 여정이 있습니다. openssl howto 및 x509 cerfo howto로 시작하는 것보다 더 나쁠 수 있습니다.

+0

궁금한 점이 있다면, 서로 다른 암호 기법을 설명하는 데 도움이되는 좋은 책을 알고 계십니까? 나는 나의 이해를 향상시키기 위해 일해 왔으며, 나는 내가 원하는 것을 찾지 못하고있다. –