S / MIME é um padrão para proteger dados MIME , não enviar e-mail especificamente . Não deve haver nenhum problema em usá-lo com HTTP, já que ambos usam os mesmos formatos MIME e até sintaxe de cabeçalho similar. Por exemplo:
POST /receiver HTTP/1.1 Host: example.com Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms040900030501050600040105" Content-Length: 476 --------------ms040900030501050600040105 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable This is a sample message. --------------ms040900030501050600040105 Content-Type: application/pkcs7-signature Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIEKDCC BCQwggMMoAMCAQICAiAJMA0GCSqGSIb3DQEBBQUAMDgxCzAJBgNVBAYTAkxUMRIwEAYDVQQK (trimmed) --------------ms040900030501050600040105--
(Note que o OpenPGP também tem um equivalente; o PGP / MIME, que é implementado pela maioria dos clientes de e-mail compatíveis com o PGP, e novamente pode ser usado pelo HTTP.)
O S / MIME usa o PKCS # 7 como base. Você poderia alternativamente usar o PKCS # 7 bruto que poderia ser usado sem qualquer embalagem S / MIME, talvez usando openssl smime -pk7out
, que recebe uma mensagem S / MIME e produz uma estrutura PKCS # 7 signedData
.
openssl smime -sign | openssl smime -pk7out | openssl asn1parse -i