Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline SVS_aki  
#1 Оставлено : 20 июня 2016 г. 8:45:01(UTC)
SVS_aki

Статус: Новичок

Группы: Участники
Зарегистрирован: 15.06.2016(UTC)
Сообщений: 6

Поблагодарили: 1 раз в 1 постах
Добрый день.
Подписываю электронное письмо при помощи примера CMS_samples:
Код:

From: office@akibank.ru
To: svs@akibank.ru
Message-ID: <356128.3.1466399461625@nch-xp-svs>
Subject: Test mail
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; 
	boundary="----=_Part_2_12037167.1466399461625"

------=_Part_2_12037167.1466399461625
Content-Type: multipart/mixed; 
	boundary="----=_Part_0_30045997.1466399459982"

------=_Part_0_30045997.1466399459982
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Test message
------=_Part_0_30045997.1466399459982--

------=_Part_2_12037167.1466399461625
Content-Type: application/pkcs7-signature; name=smime.p7s; smime-type=signed-data
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIIMBwYJKoZIhvcNAQcCoIIL+DCCC/QCAQExDDAKBgYqhQMCAgkFADCCARQGCSqGSIb3DQEHAaCC
AQUEggEBQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IA0KCWJvdW5kYXJ5PSItLS0tPV9Q
YXJ0XzBfMzAwNDU5OTcuMTQ2NjM5OTQ1OTk4MiINCg0KLS0tLS0tPV9QYXJ0XzBfMzAwNDU5OTcu
MTQ2NjM5OTQ1OTk4Mg0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lp
DQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0DQoNClRlc3QgbWVzc2FnZQ0KLS0tLS0t
PV9QYXJ0XzBfMzAwNDU5OTcuMTQ2NjM5OTQ1OTk4Mi0tDQqgggkDMIII/zCCCK6gAwIBAgIKd9wa
HAAFAAJs7TAIBgYqhQMCAgMwggFLMRgwFgYFKoUDZAESDTEwMjE2MDI4NTUyNjIxGjAYBggqhQMD
gQMBARIMMDAxNjU1MDQ1NDA2MSYwJAYDVQQJDB3Rg9C7LiDQmi4g0J3QsNGB0YvRgNC4INC0LiAy
ODEbMBkGCSqGSIb3DQEJARYMY2FAdGF4bmV0LnJ1MQswCQYDVQQGEwJSVTEzMDEGA1UECAwqMTYg
0KDQtdGB0L/Rg9Cx0LvQuNC60LAg0KLQsNGC0LDRgNGB0YLQsNC9MRUwEwYDVQQHDAzQmtCw0LfQ
sNC90YwxHjAcBgNVBAoMFdCX0JDQniDQotCw0LrRgdCd0LXRgjEwMC4GA1UECwwn0KPQtNC+0YHR
gtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAMSMwIQYDVQQDDBrQo9CmINCX0JDQniDQotCw
0LrRgdCd0LXRgjAeFw0xNjA1MTYxMzQ4MDBaFw0xNzA1MTYxMzQ5MDBaMIIBQDEYMBYGBSqFA2QB
Eg0xMDIxNjAwMDAwODM5MRowGAYIKoUDA4EDAQESDDAwMTY1MDAwMjQ1NTEgMB4GCSqGSIb3DQEJ
ARYRb2ZmaWNlQGFraWJhbmsucnUxCzAJBgNVBAYTAlJVMTcwNQYDVQQIHi4AMQA2ACAEIAQ1BEEE
PwRDBDEEOwQ4BDoEMAAgBCIEMARCBDAEQARBBEIEMAQ9MSkwJwYDVQQHHiAEHQQwBDEENQRABDUE
NgQ9BEsENQAgBCcENQQ7BD0ESzEjMCEGA1UECh4aBB8EEAQeACAAqwQQBBoEGAQRBBAEHQQaALsx
IzAhBgNVBAMeGgQfBBAEHgAgAKsEEAQaBBgEEQQQBB0EGgC7MSswKQYDVQQJHiIEPwRAAC0EOgRC
ACAEHAQ4BEAEMAAgBDQALgAgADgAOAQwMGMwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgED
QwAEQNKUmLTVi+RgIevtQZppbjXVVk06p9qgsp6y3VENTWnFogEySuv8zOwObMaTBiHJclZjziHi
VTDeHLw9cvpQlN6jggV3MIIFczAOBgNVHQ8BAf8EBAMCBPAwJgYDVR0lBB8wHQYHKoUDAgIiBgYI
KwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdIAQWMBQwCAYGKoUDZHEBMAgGBiqFA2RxAjAdBgNVHQ4E
FgQUB/I8Owwm2tKiK4jlhQvsMh7lRaswggGMBgNVHSMEggGDMIIBf4AUJpvXPIPlsOVstHWHPlWp
XLW7XIehggFTpIIBTzCCAUsxGDAWBgUqhQNkARINMTAyMTYwMjg1NTI2MjEaMBgGCCqFAwOBAwEB
EgwwMDE2NTUwNDU0MDYxJjAkBgNVBAkMHdGD0LsuINCaLiDQndCw0YHRi9GA0Lgg0LQuIDI4MRsw
GQYJKoZIhvcNAQkBFgxjYUB0YXhuZXQucnUxCzAJBgNVBAYTAlJVMTMwMQYDVQQIDCoxNiDQoNC1
0YHQv9GD0LHQu9C40LrQsCDQotCw0YLQsNGA0YHRgtCw0L0xFTATBgNVBAcMDNCa0LDQt9Cw0L3R
jDEeMBwGA1UECgwV0JfQkNCeINCi0LDQutGB0J3QtdGCMTAwLgYDVQQLDCfQo9C00L7RgdGC0L7Q
stC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YAxIzAhBgNVBAMMGtCj0KYg0JfQkNCeINCi0LDQutGB
0J3QtdGCghBYNI0EVKbUuUsu9vPARRbBMIGqBgNVHR8EgaIwgZ8wTaBLoEmGR2h0dHA6Ly9jYS50
YXhuZXQucnUvcmEvY2RwLzI2OWJkNzNjODNlNWIwZTU2Y2I0NzU4NzNlNTVhOTVjYjViYjVjODcu
Y3JsME6gTKBKhkhodHRwOi8vY2EyLnRheG5ldC5ydS9yYS9jZHAvMjY5YmQ3M2M4M2U1YjBlNTZj
YjQ3NTg3M2U1NWE5NWNiNWJiNWM4Ny5jcmwwggEgBggrBgEFBQcBAQSCARIwggEOMC8GCCsGAQUF
BzABhiNodHRwOi8vb2NzcC50YXhuZXQucnUvb2NzcC9vY3NwLnNyZjAwBggrBgEFBQcwAYYkaHR0
cDovL29jc3AyLnRheG5ldC5ydS9vY3NwL29jc3Auc3JmMFMGCCsGAQUFBzAChkdodHRwOi8vY2Eu
dGF4bmV0LnJ1L3JhL2NkcC8yNjliZDczYzgzZTViMGU1NmNiNDc1ODczZTU1YTk1Y2I1YmI1Yzg3
LmNlcjBUBggrBgEFBQcwAoZIaHR0cDovL2NhMi50YXhuZXQucnUvcmEvY2RwLzI2OWJkNzNjODNl
NWIwZTU2Y2I0NzU4NzNlNTVhOTVjYjViYjVjODcuY2VyMDYGBSqFA2RvBC0MKyLQmtGA0LjQv9GC
0L7Qn9GA0L4gQ1NQIiAo0LLQtdGA0YHQuNGPIDMuNikwKwYDVR0QBCQwIoAPMjAxNjA1MTYxMzQ4
MDBagQ8yMDE3MDUxNjEzNDgwMFowggEzBgUqhQNkcASCASgwggEkDCsi0JrRgNC40L/RgtC+0J/R
gNC+IENTUCIgKNCy0LXRgNGB0LjRjyAzLjYpDFMi0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQ
uSDRhtC10L3RgtGAICLQmtGA0LjQv9GC0L7Qn9GA0L4g0KPQpiIg0LLQtdGA0YHQuNC4IDEuNQxP
0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEy
NC0yNzM4INC+0YIgMDEuMDcuMjAxNQxP0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC1
0YLRgdGC0LLQuNGPIOKEliDQodCkLzEyOC0yNzY4INC+0YIgMzEuMTIuMjAxNTAIBgYqhQMCAgMD
QQAnLRf45CKioMrs69QIvHXz5ZZR54V559Ma2GzJGFaBQ2R2pzkkSBY5Ne9w8sEsHxqV2aB4XbhW
meP4gdQLs9owMYIBwDCCAbwCAQEwggFbMIIBSzEYMBYGBSqFA2QBEg0xMDIxNjAyODU1MjYyMRow
GAYIKoUDA4EDAQESDDAwMTY1NTA0NTQwNjEmMCQGA1UECQwd0YPQuy4g0JouINCd0LDRgdGL0YDQ
uCDQtC4gMjgxGzAZBgkqhkiG9w0BCQEWDGNhQHRheG5ldC5ydTELMAkGA1UEBhMCUlUxMzAxBgNV
BAgMKjE2INCg0LXRgdC/0YPQsdC70LjQutCwINCi0LDRgtCw0YDRgdGC0LDQvTEVMBMGA1UEBwwM
0JrQsNC30LDQvdGMMR4wHAYDVQQKDBXQl9CQ0J4g0KLQsNC60YHQndC10YIxMDAuBgNVBAsMJ9Cj
0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40Lkg0YbQtdC90YLRgDEjMCEGA1UEAwwa0KPQpiDQl9CQ
0J4g0KLQsNC60YHQndC10YICCnfcGhwABQACbO0wCgYGKoUDAgIJBQAwCgYGKoUDAgITBQAEQHvJ
wn262bICcOJSGbvkoCRUEUye8w0R/JhYJklhtN6knY+38cCfh2NFJ6auggJKaz99+TlB90Lk5OB3
w5DbL5E=
------=_Part_2_12037167.1466399461625--


Подписываемое сообщение:
Код:

Content-Type: multipart/mixed; 
	boundary="----=_Part_0_30045997.1466399459982"

------=_Part_0_30045997.1466399459982
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Test message
------=_Part_0_30045997.1466399459982--

Сервис проверки http://dss.cryptopro.ru/Verify/Verify/, так же как и КриптоАРМ, подпись видит и сообщение открепляет, однако Outlook выдает ошибку, что "Содержимое сообщения могло быть изменено".
Пробовал варианты и с прикрепленной и с отсоединенной подписью.
Очень прошу помощи в решении проблемы.
Offline SVS_aki  
#2 Оставлено : 20 июня 2016 г. 13:19:59(UTC)
SVS_aki

Статус: Новичок

Группы: Участники
Зарегистрирован: 15.06.2016(UTC)
Сообщений: 6

Поблагодарили: 1 раз в 1 постах
upd.
Подписываю открепленной подписью сообщение только с текстом:
Код:
Content-Type: multipart/mixed; 
	boundary="----=_Part_0_30045997.1466415921701"

------=_Part_0_30045997.1466415921701
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Test message
------=_Part_0_30045997.1466415921701--

Получается письмо, которое прекрасно принимается Outlook:
Код:
From: svs@akibank.ru
To: svs@akibank.ru
Message-ID: <27397991.3.1466415923483@nch-xp-svs>
Subject: Test mail
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; 
	boundary="----=_Part_2_6811689.1466415923483"

------=_Part_2_6811689.1466415923483
Content-Type: multipart/mixed; 
	boundary="----=_Part_0_30045997.1466415921701"

------=_Part_0_30045997.1466415921701
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Test message
------=_Part_0_30045997.1466415921701--

------=_Part_2_6811689.1466415923483
Content-Type: application/pkcs7-signature; name=smime.p7s; smime-type=signed-data
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIIK/AYJKoZIhvcNAQcCoIIK7TCCCukCAQExDDAKBgYqhQMCAgkFADALBgkqhkiG9w0BBwGgggkD
MIII/zCCCK6gAwIBAgIKd9waHAAFAAJs7TAIBgYqhQMCAgMwggFLMRgwFgYFKoUDZAESDTEwMjE2
MDI4NTUyNjIxGjAYBggqhQMDgQMBARIMMDAxNjU1MDQ1NDA2MSYwJAYDVQQJDB3Rg9C7LiDQmi4g
0J3QsNGB0YvRgNC4INC0LiAyODEbMBkGCSqGSIb3DQEJARYMY2FAdGF4bmV0LnJ1MQswCQYDVQQG
EwJSVTEzMDEGA1UECAwqMTYg0KDQtdGB0L/Rg9Cx0LvQuNC60LAg0KLQsNGC0LDRgNGB0YLQsNC9
MRUwEwYDVQQHDAzQmtCw0LfQsNC90YwxHjAcBgNVBAoMFdCX0JDQniDQotCw0LrRgdCd0LXRgjEw
MC4GA1UECwwn0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAMSMwIQYDVQQD
DBrQo9CmINCX0JDQniDQotCw0LrRgdCd0LXRgjAeFw0xNjA1MTYxMzQ4MDBaFw0xNzA1MTYxMzQ5
MDBaMIIBQDEYMBYGBSqFA2QBEg0xMDIxNjAwMDAwODM5MRowGAYIKoUDA4EDAQESDDAwMTY1MDAw
MjQ1NTEgMB4GCSqGSIb3DQEJARYRb2ZmaWNlQGFraWJhbmsucnUxCzAJBgNVBAYTAlJVMTcwNQYD
VQQIHi4AMQA2ACAEIAQ1BEEEPwRDBDEEOwQ4BDoEMAAgBCIEMARCBDAEQARBBEIEMAQ9MSkwJwYD
VQQHHiAEHQQwBDEENQRABDUENgQ9BEsENQAgBCcENQQ7BD0ESzEjMCEGA1UECh4aBB8EEAQeACAA
qwQQBBoEGAQRBBAEHQQaALsxIzAhBgNVBAMeGgQfBBAEHgAgAKsEEAQaBBgEEQQQBB0EGgC7MSsw
KQYDVQQJHiIEPwRAAC0EOgRCACAEHAQ4BEAEMAAgBDQALgAgADgAOAQwMGMwHAYGKoUDAgITMBIG
ByqFAwICJAAGByqFAwICHgEDQwAEQNKUmLTVi+RgIevtQZppbjXVVk06p9qgsp6y3VENTWnFogEy
Suv8zOwObMaTBiHJclZjziHiVTDeHLw9cvpQlN6jggV3MIIFczAOBgNVHQ8BAf8EBAMCBPAwJgYD
VR0lBB8wHQYHKoUDAgIiBgYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdIAQWMBQwCAYGKoUDZHEB
MAgGBiqFA2RxAjAdBgNVHQ4EFgQUB/I8Owwm2tKiK4jlhQvsMh7lRaswggGMBgNVHSMEggGDMIIB
f4AUJpvXPIPlsOVstHWHPlWpXLW7XIehggFTpIIBTzCCAUsxGDAWBgUqhQNkARINMTAyMTYwMjg1
NTI2MjEaMBgGCCqFAwOBAwEBEgwwMDE2NTUwNDU0MDYxJjAkBgNVBAkMHdGD0LsuINCaLiDQndCw
0YHRi9GA0Lgg0LQuIDI4MRswGQYJKoZIhvcNAQkBFgxjYUB0YXhuZXQucnUxCzAJBgNVBAYTAlJV
MTMwMQYDVQQIDCoxNiDQoNC10YHQv9GD0LHQu9C40LrQsCDQotCw0YLQsNGA0YHRgtCw0L0xFTAT
BgNVBAcMDNCa0LDQt9Cw0L3RjDEeMBwGA1UECgwV0JfQkNCeINCi0LDQutGB0J3QtdGCMTAwLgYD
VQQLDCfQo9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YAxIzAhBgNVBAMMGtCj
0KYg0JfQkNCeINCi0LDQutGB0J3QtdGCghBYNI0EVKbUuUsu9vPARRbBMIGqBgNVHR8EgaIwgZ8w
TaBLoEmGR2h0dHA6Ly9jYS50YXhuZXQucnUvcmEvY2RwLzI2OWJkNzNjODNlNWIwZTU2Y2I0NzU4
NzNlNTVhOTVjYjViYjVjODcuY3JsME6gTKBKhkhodHRwOi8vY2EyLnRheG5ldC5ydS9yYS9jZHAv
MjY5YmQ3M2M4M2U1YjBlNTZjYjQ3NTg3M2U1NWE5NWNiNWJiNWM4Ny5jcmwwggEgBggrBgEFBQcB
AQSCARIwggEOMC8GCCsGAQUFBzABhiNodHRwOi8vb2NzcC50YXhuZXQucnUvb2NzcC9vY3NwLnNy
ZjAwBggrBgEFBQcwAYYkaHR0cDovL29jc3AyLnRheG5ldC5ydS9vY3NwL29jc3Auc3JmMFMGCCsG
AQUFBzAChkdodHRwOi8vY2EudGF4bmV0LnJ1L3JhL2NkcC8yNjliZDczYzgzZTViMGU1NmNiNDc1
ODczZTU1YTk1Y2I1YmI1Yzg3LmNlcjBUBggrBgEFBQcwAoZIaHR0cDovL2NhMi50YXhuZXQucnUv
cmEvY2RwLzI2OWJkNzNjODNlNWIwZTU2Y2I0NzU4NzNlNTVhOTVjYjViYjVjODcuY2VyMDYGBSqF
A2RvBC0MKyLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiAo0LLQtdGA0YHQuNGPIDMuNikwKwYDVR0Q
BCQwIoAPMjAxNjA1MTYxMzQ4MDBagQ8yMDE3MDUxNjEzNDgwMFowggEzBgUqhQNkcASCASgwggEk
DCsi0JrRgNC40L/RgtC+0J/RgNC+IENTUCIgKNCy0LXRgNGB0LjRjyAzLjYpDFMi0KPQtNC+0YHR
gtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAICLQmtGA0LjQv9GC0L7Qn9GA0L4g0KPQpiIg
0LLQtdGA0YHQuNC4IDEuNQxP0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC
0LLQuNGPIOKEliDQodCkLzEyNC0yNzM4INC+0YIgMDEuMDcuMjAxNQxP0KHQtdGA0YLQuNGE0LjQ
utCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyOC0yNzY4INC+0YIgMzEu
MTIuMjAxNTAIBgYqhQMCAgMDQQAnLRf45CKioMrs69QIvHXz5ZZR54V559Ma2GzJGFaBQ2R2pzkk
SBY5Ne9w8sEsHxqV2aB4XbhWmeP4gdQLs9owMYIBwDCCAbwCAQEwggFbMIIBSzEYMBYGBSqFA2QB
Eg0xMDIxNjAyODU1MjYyMRowGAYIKoUDA4EDAQESDDAwMTY1NTA0NTQwNjEmMCQGA1UECQwd0YPQ
uy4g0JouINCd0LDRgdGL0YDQuCDQtC4gMjgxGzAZBgkqhkiG9w0BCQEWDGNhQHRheG5ldC5ydTEL
MAkGA1UEBhMCUlUxMzAxBgNVBAgMKjE2INCg0LXRgdC/0YPQsdC70LjQutCwINCi0LDRgtCw0YDR
gdGC0LDQvTEVMBMGA1UEBwwM0JrQsNC30LDQvdGMMR4wHAYDVQQKDBXQl9CQ0J4g0KLQsNC60YHQ
ndC10YIxMDAuBgNVBAsMJ9Cj0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40Lkg0YbQtdC90YLRgDEj
MCEGA1UEAwwa0KPQpiDQl9CQ0J4g0KLQsNC60YHQndC10YICCnfcGhwABQACbO0wCgYGKoUDAgIJ
BQAwCgYGKoUDAgITBQAEQFAg/C5fAaLqnPcnwg/sfpR1d3ZA8Bv+cyK5YCJAw+77rsez5dKKbjDQ
ygroH1Iu1BQW7VhD3KGvJQxIff9T5vE=
------=_Part_2_6811689.1466415923483--


Но стоит добавить в письмо файл:
Код:
Content-Type: multipart/mixed; 
	boundary="----=_Part_0_30045997.1466416051769"

------=_Part_0_30045997.1466416051769
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Test message
------=_Part_0_30045997.1466416051769
Content-Type: text/plain; charset=us-ascii; name=file.txt
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=file.txt

111
------=_Part_0_30045997.1466416051769--


Получается письмо, на которое Outlook ругается:
Код:
From: svs@akibank.ru
To: svs@akibank.ru
Message-ID: <31693939.3.1466416053488@nch-xp-svs>
Subject: Test mail
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; 
	boundary="----=_Part_2_10277809.1466416053488"

------=_Part_2_10277809.1466416053488
Content-Type: multipart/mixed; 
	boundary="----=_Part_0_30045997.1466416051769"

------=_Part_0_30045997.1466416051769
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Test message
------=_Part_0_30045997.1466416051769
Content-Type: text/plain; charset=us-ascii; name=file.txt
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=file.txt

111
------=_Part_0_30045997.1466416051769--

------=_Part_2_10277809.1466416053488
Content-Type: application/pkcs7-signature; name=smime.p7s; smime-type=signed-data
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIIK/AYJKoZIhvcNAQcCoIIK7TCCCukCAQExDDAKBgYqhQMCAgkFADALBgkqhkiG9w0BBwGgggkD
MIII/zCCCK6gAwIBAgIKd9waHAAFAAJs7TAIBgYqhQMCAgMwggFLMRgwFgYFKoUDZAESDTEwMjE2
MDI4NTUyNjIxGjAYBggqhQMDgQMBARIMMDAxNjU1MDQ1NDA2MSYwJAYDVQQJDB3Rg9C7LiDQmi4g
0J3QsNGB0YvRgNC4INC0LiAyODEbMBkGCSqGSIb3DQEJARYMY2FAdGF4bmV0LnJ1MQswCQYDVQQG
EwJSVTEzMDEGA1UECAwqMTYg0KDQtdGB0L/Rg9Cx0LvQuNC60LAg0KLQsNGC0LDRgNGB0YLQsNC9
MRUwEwYDVQQHDAzQmtCw0LfQsNC90YwxHjAcBgNVBAoMFdCX0JDQniDQotCw0LrRgdCd0LXRgjEw
MC4GA1UECwwn0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAMSMwIQYDVQQD
DBrQo9CmINCX0JDQniDQotCw0LrRgdCd0LXRgjAeFw0xNjA1MTYxMzQ4MDBaFw0xNzA1MTYxMzQ5
MDBaMIIBQDEYMBYGBSqFA2QBEg0xMDIxNjAwMDAwODM5MRowGAYIKoUDA4EDAQESDDAwMTY1MDAw
MjQ1NTEgMB4GCSqGSIb3DQEJARYRb2ZmaWNlQGFraWJhbmsucnUxCzAJBgNVBAYTAlJVMTcwNQYD
VQQIHi4AMQA2ACAEIAQ1BEEEPwRDBDEEOwQ4BDoEMAAgBCIEMARCBDAEQARBBEIEMAQ9MSkwJwYD
VQQHHiAEHQQwBDEENQRABDUENgQ9BEsENQAgBCcENQQ7BD0ESzEjMCEGA1UECh4aBB8EEAQeACAA
qwQQBBoEGAQRBBAEHQQaALsxIzAhBgNVBAMeGgQfBBAEHgAgAKsEEAQaBBgEEQQQBB0EGgC7MSsw
KQYDVQQJHiIEPwRAAC0EOgRCACAEHAQ4BEAEMAAgBDQALgAgADgAOAQwMGMwHAYGKoUDAgITMBIG
ByqFAwICJAAGByqFAwICHgEDQwAEQNKUmLTVi+RgIevtQZppbjXVVk06p9qgsp6y3VENTWnFogEy
Suv8zOwObMaTBiHJclZjziHiVTDeHLw9cvpQlN6jggV3MIIFczAOBgNVHQ8BAf8EBAMCBPAwJgYD
VR0lBB8wHQYHKoUDAgIiBgYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdIAQWMBQwCAYGKoUDZHEB
MAgGBiqFA2RxAjAdBgNVHQ4EFgQUB/I8Owwm2tKiK4jlhQvsMh7lRaswggGMBgNVHSMEggGDMIIB
f4AUJpvXPIPlsOVstHWHPlWpXLW7XIehggFTpIIBTzCCAUsxGDAWBgUqhQNkARINMTAyMTYwMjg1
NTI2MjEaMBgGCCqFAwOBAwEBEgwwMDE2NTUwNDU0MDYxJjAkBgNVBAkMHdGD0LsuINCaLiDQndCw
0YHRi9GA0Lgg0LQuIDI4MRswGQYJKoZIhvcNAQkBFgxjYUB0YXhuZXQucnUxCzAJBgNVBAYTAlJV
MTMwMQYDVQQIDCoxNiDQoNC10YHQv9GD0LHQu9C40LrQsCDQotCw0YLQsNGA0YHRgtCw0L0xFTAT
BgNVBAcMDNCa0LDQt9Cw0L3RjDEeMBwGA1UECgwV0JfQkNCeINCi0LDQutGB0J3QtdGCMTAwLgYD
VQQLDCfQo9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YAxIzAhBgNVBAMMGtCj
0KYg0JfQkNCeINCi0LDQutGB0J3QtdGCghBYNI0EVKbUuUsu9vPARRbBMIGqBgNVHR8EgaIwgZ8w
TaBLoEmGR2h0dHA6Ly9jYS50YXhuZXQucnUvcmEvY2RwLzI2OWJkNzNjODNlNWIwZTU2Y2I0NzU4
NzNlNTVhOTVjYjViYjVjODcuY3JsME6gTKBKhkhodHRwOi8vY2EyLnRheG5ldC5ydS9yYS9jZHAv
MjY5YmQ3M2M4M2U1YjBlNTZjYjQ3NTg3M2U1NWE5NWNiNWJiNWM4Ny5jcmwwggEgBggrBgEFBQcB
AQSCARIwggEOMC8GCCsGAQUFBzABhiNodHRwOi8vb2NzcC50YXhuZXQucnUvb2NzcC9vY3NwLnNy
ZjAwBggrBgEFBQcwAYYkaHR0cDovL29jc3AyLnRheG5ldC5ydS9vY3NwL29jc3Auc3JmMFMGCCsG
AQUFBzAChkdodHRwOi8vY2EudGF4bmV0LnJ1L3JhL2NkcC8yNjliZDczYzgzZTViMGU1NmNiNDc1
ODczZTU1YTk1Y2I1YmI1Yzg3LmNlcjBUBggrBgEFBQcwAoZIaHR0cDovL2NhMi50YXhuZXQucnUv
cmEvY2RwLzI2OWJkNzNjODNlNWIwZTU2Y2I0NzU4NzNlNTVhOTVjYjViYjVjODcuY2VyMDYGBSqF
A2RvBC0MKyLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiAo0LLQtdGA0YHQuNGPIDMuNikwKwYDVR0Q
BCQwIoAPMjAxNjA1MTYxMzQ4MDBagQ8yMDE3MDUxNjEzNDgwMFowggEzBgUqhQNkcASCASgwggEk
DCsi0JrRgNC40L/RgtC+0J/RgNC+IENTUCIgKNCy0LXRgNGB0LjRjyAzLjYpDFMi0KPQtNC+0YHR
gtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAICLQmtGA0LjQv9GC0L7Qn9GA0L4g0KPQpiIg
0LLQtdGA0YHQuNC4IDEuNQxP0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC
0LLQuNGPIOKEliDQodCkLzEyNC0yNzM4INC+0YIgMDEuMDcuMjAxNQxP0KHQtdGA0YLQuNGE0LjQ
utCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyOC0yNzY4INC+0YIgMzEu
MTIuMjAxNTAIBgYqhQMCAgMDQQAnLRf45CKioMrs69QIvHXz5ZZR54V559Ma2GzJGFaBQ2R2pzkk
SBY5Ne9w8sEsHxqV2aB4XbhWmeP4gdQLs9owMYIBwDCCAbwCAQEwggFbMIIBSzEYMBYGBSqFA2QB
Eg0xMDIxNjAyODU1MjYyMRowGAYIKoUDA4EDAQESDDAwMTY1NTA0NTQwNjEmMCQGA1UECQwd0YPQ
uy4g0JouINCd0LDRgdGL0YDQuCDQtC4gMjgxGzAZBgkqhkiG9w0BCQEWDGNhQHRheG5ldC5ydTEL
MAkGA1UEBhMCUlUxMzAxBgNVBAgMKjE2INCg0LXRgdC/0YPQsdC70LjQutCwINCi0LDRgtCw0YDR
gdGC0LDQvTEVMBMGA1UEBwwM0JrQsNC30LDQvdGMMR4wHAYDVQQKDBXQl9CQ0J4g0KLQsNC60YHQ
ndC10YIxMDAuBgNVBAsMJ9Cj0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40Lkg0YbQtdC90YLRgDEj
MCEGA1UEAwwa0KPQpiDQl9CQ0J4g0KLQsNC60YHQndC10YICCnfcGhwABQACbO0wCgYGKoUDAgIJ
BQAwCgYGKoUDAgITBQAEQOjPM/hR0mKwT5P9vj1k4TiuNe0iPtacXOpEScLzWGC7UrnZJPPPSajr
F+Uyni7j5D0xqC2i5RnT7SZ85hTDqSo=
------=_Part_2_10277809.1466416053488--


Код программы
Код:
package smime;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Transport;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ByteArrayOutputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.cert.Certificate;
import ru.CryptoPro.JCP.JCP;
import CMS_samples.CMS;

public class SMime {

    static String smtpHost = "10.102.25.63";
    static String smtpPort = "10025";
    static String from = "svs@akibank.ru";
    static String to = "svs@akibank.ru";
    static String subject = "Test mail";
    static String content = "Test message";
    static String encoding = "base64";
    static String STORE_TYPE = JCP.HD_STORE_NAME;
    static String STORE_ALIAS = "SMEV_16";
    static char[] STORE_PASSWORD = "xxxxx".toCharArray();
    static String filename = "c:\\111\\file.txt";
    public static final String DIGEST_OID = JCP.GOST_DIGEST_OID;
    public static final String SIGN_OID = JCP.GOST_EL_KEY_OID;

    public static void main(String[] args) throws Exception {

        send();
    }

    public static void send() throws Exception {
        java.util.Properties props = new java.util.Properties();
        props.put("mail.smtp.host", smtpHost);
        props.put("mail.smtp.port", "" + smtpPort);
        Session session = Session.getDefaultInstance(props, null);
        MimeMessage msg = new MimeMessage(session);
        msg.setFrom(new InternetAddress(from));
        msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
        msg.setSubject(subject, "koi8-r");

        Multipart multipart = new MimeMultipart();
        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setText(content);
        multipart.addBodyPart(messageBodyPart);
        File sF = new File(filename);
        if (sF != null) {
            messageBodyPart = new MimeBodyPart();
            messageBodyPart.setFileName(sF.getName());
            DataSource src = new FileDataSource(sF.getAbsolutePath());
            messageBodyPart.setDataHandler(new DataHandler(src));
            multipart.addBodyPart(messageBodyPart);
        }

        MimeBodyPart mimeBodyForSign = new MimeBodyPart();
        mimeBodyForSign.setContent(multipart);

        msg.setContent(multipart);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        msg.writeTo(bos);
        String tmpStr = bos.toString();
        String strToSign = tmpStr.substring(tmpStr.indexOf("Content-Type:"));       
        new FileOutputStream("c:\\!\\SMIME_out\\strToSign.txt").write(strToSign.getBytes());
        
        MimeMultipart multipartSign = make(mimeBodyForSign, strToSign);
        msg.setContent(multipartSign, multipartSign.getContentType());
        msg.saveChanges();
        msg.writeTo(new FileOutputStream("c:\\!\\SMIME_out\\sign_msg.txt"));

        Transport.send(msg);
    }

    private static MimeMultipart make(MimeBodyPart paramMimeBodyPart, String strToSign)
            throws Exception {
        try {
            MimeBodyPart localMimeBodyPart = new MimeBodyPart();
            byte[] b = myCMSSign(strToSign.getBytes(),true);
            localMimeBodyPart.setContent(b, "application/pkcs7-signature; name=smime.p7s; smime-type=signed-data");
            localMimeBodyPart.addHeader("Content-Type", "application/pkcs7-signature; name=smime.p7s; smime-type=signed-data");
            localMimeBodyPart.addHeader("Content-Disposition", "attachment; filename=\"smime.p7s\"");
            localMimeBodyPart.addHeader("Content-Description", "S/MIME Cryptographic Signature");
            localMimeBodyPart.addHeader("Content-Transfer-Encoding", encoding);
            
            StringBuffer localStringBuffer = new StringBuffer("signed; protocol=\"application/pkcs7-signature\"");
            MimeMultipart localMimeMultipart = new MimeMultipart(localStringBuffer.toString());
            localMimeMultipart.addBodyPart(paramMimeBodyPart);
            localMimeMultipart.addBodyPart(localMimeBodyPart);
            return localMimeMultipart;
        } catch (Exception localMessagingException) {
            throw new Exception("exception putting multi-part together.", localMessagingException);
        }
    }

    public static byte[] myCMSSign(byte[] data, boolean detached) throws Exception {
        PrivateKey key = loadKey(STORE_ALIAS, STORE_PASSWORD);
        Certificate cert = loadCertificate(STORE_ALIAS);
        return CMS.CMSSign(data, key, cert, detached);

    }

    private static boolean loadSert(Certificate cert, PrivateKey key) {
        try {
            KeyStore hdImageStore = KeyStore.getInstance(STORE_TYPE);
            hdImageStore.load(null, null);
            cert = hdImageStore.getCertificate(STORE_ALIAS);
            key = (PrivateKey) hdImageStore.getKey(STORE_ALIAS, STORE_PASSWORD);
        } catch (Exception loadSertExp) {
            System.out.println("loadSert error : " + loadSertExp);
            return false;
        }
        return true;
    }

    public static PrivateKey loadKey(String name, char[] password)
            throws Exception {
        final KeyStore hdImageStore = KeyStore.getInstance(STORE_TYPE);
        hdImageStore.load(null, null);
        return (PrivateKey) hdImageStore.getKey(name, password);
    }

    public static Certificate loadCertificate(String name)
            throws Exception {
        final KeyStore hdImageStore = KeyStore.getInstance(STORE_TYPE);
        hdImageStore.load(null, null);
        return hdImageStore.getCertificate(name);
    }

}

Другими словами: с закомментированной 65 строкой Outlook письмо принимает, иначе - нет
thanks 1 пользователь поблагодарил SVS_aki за этот пост.
Ghost-mo оставлено 17.04.2019(UTC)
Offline SVS_aki  
#3 Оставлено : 15 июля 2016 г. 15:46:02(UTC)
SVS_aki

Статус: Новичок

Группы: Участники
Зарегистрирован: 15.06.2016(UTC)
Сообщений: 6

Поблагодарили: 1 раз в 1 постах
Проблема решена.
Оказывается на каком то этапе пересылки письма MIME сообщение чуть трансформируется, например строка из исходного сообщения
Цитата:
Content-Type: text/plain; charset=us-ascii; name=file.txt

превращается в
Цитата:
Content-Type: text/plain; charset=us-ascii; name="file.txt"

Естественно, Outlook считает, что подписанное сообщение отличается от исходного.
Разбираться кто виноват в это, JavaMail, почтовый сервер или Outlook не стал, просто подогнал формат подписываемого сообщения.
Offline lartok  
#4 Оставлено : 20 октября 2017 г. 13:29:10(UTC)
lartok

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.04.2016(UTC)
Сообщений: 108

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Автор: SVS_aki Перейти к цитате
Проблема решена.

Здравствуйте! Уже неделю мучаюсь - не могу получить подписанное сообщение. Все делаю по вашему примеру. Проверяю на http://dss.cryptopro.ru/Verify/Verify/ - подпись формата CMS (открепленная) - проверка проходит (сравниваю строку для подписи strToSign.txt и саму подпись), подпись валидна. Кажется все хорошо должно быть, но когда письмо приходит на gmail - письмо фальсифицировано,в Outlook тоже самое (ругается на подпись). Подписываю сертификатом, который используется еще для СМЭВ. В чем может быть проблема подскажите пожалуйста.
Offline lartok  
#5 Оставлено : 20 октября 2017 г. 13:33:45(UTC)
lartok

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.04.2016(UTC)
Сообщений: 108

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Строка для подписи
Код:
Content-Type: multipart/mixed; 
	boundary="----=_Part_0_374110595.1508486431221"

------=_Part_0_374110595.1508486431221
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Test message
------=_Part_0_374110595.1508486431221--


Само письмо
Код:
Message-ID: <1014026039.1508486432742.JavaMail.javamailuser@localhost>
From: *******
To: ****@gmail.com
Subject: Test mail
Mime-Version: 1.0
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; 
	boundary="----=_Part_1_859845986.1508486432741"

------=_Part_1_859845986.1508486432741
Content-Type: multipart/mixed; 
	boundary="----=_Part_0_374110595.1508486431221"

------=_Part_0_374110595.1508486431221
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Test message
------=_Part_0_374110595.1508486431221--

------=_Part_1_859845986.1508486432741
Content-Type: application/pkcs7-signature; name=smime.p7s; smime-type=signed-data
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

M***
...
...
...***x
------=_Part_1_859845986.1508486432741--
Offline lartok  
#6 Оставлено : 20 октября 2017 г. 13:44:33(UTC)
lartok

Статус: Активный участник

Группы: Участники
Зарегистрирован: 27.04.2016(UTC)
Сообщений: 108

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Кроме КриптоПро JCP есть КриптоПро CSP - может есть консольная команда по созданию и подписи формата PKCS#7, типа openssl. Подписывал строку strToSign.txt через openssl openssl smime -sign..... самоподписным сертификатом - отправлял, получал корректное подписанное сообщение (естественно ругался на сертификат - не доверенный).
Может есть какие-то требования по сертификату? Сертификат выдан организации, подпись осуществляется пользователем, коннект к SMTP серверу под другой учеткой.
P.S.: КриптоПро JCP 2.0.37 + jre7

Отредактировано пользователем 20 октября 2017 г. 14:50:50(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.