标签:php mime email signature pgp
我正在尝试使用PHP中的PGP签名邮件.我可以使边界和标题正常工作,但邮件签名无效(如Thunderbirds Enigmail所述).
我在这里的问题是签署什么部分以及在做什么时要注意什么.
目前,生成的邮件的来源如下所示(文本和签名由占位符替换,以便于阅读):
Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=_1b5364229a82b654fad7cf2aa969f02e"
MIME-Version: 1.0
This is a message in Mime Format. If you see this, your mail reader does not support this format.
--=_1b5364229a82b654fad7cf2aa969f02e
Content-Type: multipart/alternative;
boundary="=_53ba9ef8c471e6c8d72f215feaad8033"
Content-Transfer-Encoding: 7bit
--=_53ba9ef8c471e6c8d72f215feaad8033
&Content-Type: text/plain; charset=UTF-8
&Content-Transfer-Encoding: quoted-printable
&
&PLAIN TEXT CONTENT ENCODED IN QUOTED PRINTABLE
&
&--=_53ba9ef8c471e6c8d72f215feaad8033
&Content-Type: text/html; charset=UTF-8
&Content-Transfer-Encoding: quoted-printable
&
&HTML CONTENT ENCODED IN QUOTED PRINTABLE
--=_53ba9ef8c471e6c8d72f215feaad8033--
--=_1b5364229a82b654fad7cf2aa969f02e
Content-Type: application/pgp-signature; name="signature.asc"
Content-Disposition: attachment; filename="signature.asc"
Content-Description: OpenPGP digital signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
PGP SIGNATURE HERE
-----END PGP SIGNATURE-----
--=_1b5364229a82b654fad7cf2aa969f02e--
目前以&用于生成签名.换行符只是新行(PHP_EOL).
我试过遵循RFC2015,但这似乎不适用于multipart / alternative conent.
请帮帮我,这样我就可以完成了.
解决方法:
我发现自己……
首先,我需要将所有换行符转换为CRLF,就像RFC状态一样.然后我需要考虑整个multipart / alternative包含其标题作为要签名的消息.所以应该是:
Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=_1b5364229a82b654fad7cf2aa969f02e"
MIME-Version: 1.0
This is a message in Mime Format. If you see this, your mail reader does not support this format.
--=_1b5364229a82b654fad7cf2aa969f02e
&Content-Type: multipart/alternative;
& boundary="=_53ba9ef8c471e6c8d72f215feaad8033"
&Content-Transfer-Encoding: 7bit
&
&
&--=_53ba9ef8c471e6c8d72f215feaad8033
&Content-Type: text/plain; charset=UTF-8
&Content-Transfer-Encoding: quoted-printable
&
&PLAIN TEXT CONTENT ENCODED IN QUOTED PRINTABLE
&
&--=_53ba9ef8c471e6c8d72f215feaad8033
&Content-Type: text/html; charset=UTF-8
&Content-Transfer-Encoding: quoted-printable
&
&HTML CONTENT ENCODED IN QUOTED PRINTABLE
&
&--=_53ba9ef8c471e6c8d72f215feaad8033--
--=_1b5364229a82b654fad7cf2aa969f02e
Content-Type: application/pgp-signature; name="signature.asc"
Content-Disposition: attachment; filename="signature.asc"
Content-Description: OpenPGP digital signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
PGP SIGNATURE HERE
-----END PGP SIGNATURE-----
--=_1b5364229a82b654fad7cf2aa969f02e--
以&开头的行是要签名的人.
标签:php,mime,email,signature,pgp 来源: https://codeday.me/bug/20190630/1336726.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。