Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.04.2015(UTC) Сообщений: 36 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Делаю подпись из браузера: Код:
function SignCreate(thumbprint, dataToSign) {
var oStore = CreateObject("CAPICOM.Store");
oStore.Open();
var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
var oCertificates = oStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);
if (oCertificates.Count == 0) {
alert("Certificate not found: " + certSubjectName);
return;
}
var oCertificate = oCertificates.Item(1);
var oSigner = CreateObject("CAdESCOM.CPSigner");
oSigner.Certificate = oCertificate;
oSigner.TSAAddress = "http://testca.cryptopro.ru/tsp/tsp.srf";
var oSignedData = CreateObject("CAdESCOM.CadesSignedData");
oSignedData.Content = dataToSign;
try {
var CADES_BES = 1;
var CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;
var sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_X_LONG_TYPE_1, true);
} catch (err) {
alert("Failed to create signature. Error: " + GetErrorMessage(err));
return;
}
oStore.Close();
return sSignedMessage;
}
Пытаюсь проверить её на сервере (и подпись и сообщения передаются корректно): Код:
sign = sign.replaceAll("\\s+", "");
try (ByteArrayInputStream cadesCmsStream = new ByteArrayInputStream(Base64.decode(sign))) {
try (ByteArrayInputStream dataStream = new ByteArrayInputStream(data.getBytes("utf16"))) {
CAdESSignature cadesSignature = new CAdESSignature(cadesCmsStream, dataStream, CAdESType.CAdES_X_Long_Type_1);
Container2012_512 config = new Container2012_512();
//Здесь грузят хранилище
Collection < X509Certificate > chain = new ArrayList < > ();
loadConfiguration(config, chain);
cadesSignature.verify(chain);
}
} catch (Exception e) {
e.printStackTrace();
return "fail";
}
И вот такая ошибка: Цитата: org.bouncycastle.cms.CMSSignerDigestMismatchException: message-digest attribute value does not match calculated value, errors: 'Signature is invalid' (8)
Если эту подпись в браузере проверять, то всё корректно. Ничего не валится также если данные добавлять в подпись и в функцию CAdESSignature передевать null (вместо dataStream). Почему мой вариант не работает? Отредактировано пользователем 5 мая 2015 г. 14:58:19(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.04.2015(UTC) Сообщений: 36 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Так ведь я вроде правильно делаю Цитата: По умолчанию свойство ContentEncoding имеет значение CADESCOM_STRING_TO_UCS2LE.
Значит я кодирую данные в UTF-16 Цитата: data.getBytes("utf16")
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.04.2015(UTC) Сообщений: 36 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Интересно, что когда я перевёл строку dataToSign в base64 и добавил Encoding: Код:
oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
Конечно в этом случае придётся подумать как в JavaScript строчку произвольных символов в base64 перевестиНа сервере просто поменял на UTF-8: То всё начало работать... Это конечно не объясняет почему не работал первый вариант, однако рабочий обход. Отредактировано пользователем 5 мая 2015 г. 22:34:26(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.04.2015(UTC) Сообщений: 36 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Добрый день, С ключами из тестового сертификационного центра всё стало работать корректно. Однако пришли ключи от заказчика и тут brouser plugin отказывается работать (ошибка 800B010E) Вот что я понял: 1) Поглядел какие запросы не проходят снифиром: валится один из запросов ocsp 2) Поглядел в свойства сертификата: Код:
[1]Доступ к сведениям центра сертификации
Метод доступа=Протокол определения состояния сертификата через сеть (1.3.6.1.5.5.7.48.1)
Дополнительное имя:
URL=http://ca.rzd/ocsp/ocsp.srf
[2]Доступ к сведениям центра сертификации
Метод доступа=Протокол определения состояния сертификата через сеть (1.3.6.1.5.5.7.48.1)
Дополнительное имя:
URL=http://ca.rzd.ru/ocsp/ocsp.srf
[3]Доступ к сведениям центра сертификации
Метод доступа=Поставщик центра сертификации (1.3.6.1.5.5.7.48.2)
Дополнительное имя:
URL=http://ca.rzd/aca/root.p7b
[4]Доступ к сведениям центра сертификации
Метод доступа=Поставщик центра сертификации (1.3.6.1.5.5.7.48.2)
Дополнительное имя:
URL=http://ca.rzd.ru/aca/root.p7b
Указанно два ocsp из них один доступен глобально (URL=http://ca.rzd.ru/ocsp/ocsp.srf), другой нет (URL=http://ca.rzd/ocsp/ocsp.srf). 3) Собрал лог: Код:
00000001 0.00000000 [11504] cades.dll: (pSignPara=0x00B1F118, fDetachedSignature=1, cToBeSigned=1, rgpbToBeSigned=0x00B1F128, rgcbToBeSigned=0x00B1F124, ppSignedBlob=0x00B1F14C)
00000002 0.10739309 [11504] cades.dll: Signer updating start
00000003 0.10745015 [11504] cades.dll: Hash algorithm deduced
00000004 0.10751050 [11504] cades.dll: (pAttr=0)
00000005 0.10756797 [11504] cades.dll: (pAttr=0)
00000006 0.10763037 [11504] cades.dll: Attributes copied
00000007 0.10768580 [11504] cades.dll: Signer does not have any of signing-certificate attributes
00000008 0.10845513 [11504] cades.dll: signing-certificate(-v2) attribute assembled
00000009 0.10849536 [11504] cades.dll: Signer does not have signingTime attribute
00000010 0.10855858 [11504] cades.dll: signingTime attribute assembled
00000011 0.10859471 [11504] cades.dll: Signer is updated successfully
00000012 0.10863329 [11504] cades.dll: (dwMsgEncodingType=0x00010001, dwFlags=0x00000004, pvMsgEncodeInfo=0x00B1EB70, pszInnerContentObjID=0, pStreamInfo=0x00000000)
00000013 0.10866860 [11504] cades.dll: Start
00000014 0.10870390 [11504] cades.dll: Input parameters checked
00000015 0.10874044 [11504] cades.dll: Copy of input structures is ready
00000016 0.10877657 [11504] cades.dll: Signers updating start
00000017 0.10881065 [11504] cades.dll: Signer #0
00000018 0.10990553 [11504] cades.dll: Public key info is exported successfully
00000019 0.10995602 [11504] cades.dll: Signature algoritm OID info is found: 1.2.643.2.2.3
00000020 0.11022943 [11504] cades.dll: Certificates equality checked
00000021 0.11027870 [11504] cades.dll: (szHashAlgorithm=1.2.643.2.2.9)
00000022 0.11032426 [11504] cades.dll: Hash algorithm deduced
00000023 0.11037189 [11504] cades.dll: (pAttr->pszObjId=1.2.840.113549.1.9.5)
00000024 0.11041540 [11504] cades.dll: (pAttr->pszObjId=1.2.840.113549.1.9.16.2.47)
00000025 0.11045112 [11504] cades.dll: Calling CryptMsgOpenToEncode()
00000026 0.11053774 [11504] cades.dll: (hMsg=0x053DC848, GetLastError=0x00000000)
00000027 4.33452177 [11504] cades.dll: (hCryptMsg=0x053DC848, dwSignatureIndex=0, pCadesSignPara=0x00B1EB88)
00000028 4.33471537 [11504] cades.dll: Input parameters checked
00000029 4.33584452 [11504] cades.dll: Signer certificate ID found
00000030 4.33591413 [11504] cades.dll: pSignerCert=0x054318F0
00000031 4.33655357 [11504] cades.dll: (hCryptMsg=0x053DC848, dwSignatureIndex=0, pdwCadesType=0x00B1E450)
00000032 4.33667660 [11504] cades.dll: (res=1, GetLastError=0x00000000
00000033 4.33672094 [11504] cades.dll: Hash algorithm deduced
00000034 4.33678102 [11504] cades.dll: Signature extracted via CMSG_ENCRYPTED_DIGEST
00000035 4.33819580 [11504] tspcli.dll: Checking policies...
00000036 4.33824348 [11504] tspcli.dll: Checking policies... OK.
00000037 4.33828163 [11504] tspcli.dll: Making request...
00000038 4.33833551 [11504] tspcli.dll: Initializing request...
00000039 4.33849716 [11504] tspcli.dll: Encoding request...
00000040 4.33857393 [11504] tspcli.dll: Making request... OK.
00000041 6.63518286 [11504] tspcli.dll: Importing time-stamp...
00000042 6.63585138 [11504] tspcli.dll: Checking status of time-stamp response...
00000043 6.63597631 [11504] tspcli.dll: Parsing and checking time-stamp token fields...
00000044 6.63615131 [11504] tspcli.dll: Importing time-stamp... OK
00000045 6.63703775 [11504] cades.dll: (hCryptMsg=0x053DC848, dwSignatureIndex=0, ppCertificates=0x00B1E14C)
00000046 6.63707972 [11504] cades.dll: Exception thrown: _hr
00000047 6.63715363 [11504] cades.dll: COleException, m_sc=0x8009100f
00000048 6.63719988 [11504] cades.dll: (res=0, GetLastError=0x8009100f
00000049 6.63735962 [11504] cades.dll: #start#
00000050 6.63740253 [11504] cades.dll: #start#
00000051 6.63937092 [11504] cades.dll: #start#
00000052 6.63941145 [11504] cades.dll: #start#
00000053 6.63944960 [11504] cades.dll: #start#
00000054 6.63948536 [11504] cades.dll: #success#
00000055 6.63952351 [11504] cades.dll: #start#
00000056 6.63955975 [11504] cades.dll: #start#
00000057 6.63959885 [11504] cades.dll: #start#
00000058 6.63963461 [11504] cades.dll: #success#
00000059 6.63967133 [11504] cades.dll: #start#
00000060 6.63970852 [11504] cades.dll: #success#
00000061 6.63974333 [11504] cades.dll: #start#
00000062 6.63980103 [11504] pkivalidator.dll: Start
00000063 6.63983870 [11504] pkivalidator.dll: pExtraStatus = 0x00000000
00000064 6.63987494 [11504] pkivalidator.dll: pExtraPara = 0x04e7a7ec
00000065 6.63991165 [11504] pkivalidator.dll: Start
00000066 6.63994837 [11504] pkivalidator.dll: pExtraStatus = 0x00000000
00000067 6.63998604 [11504] pkivalidator.dll: pExtraPara = 0x00b1d4bc
00000068 6.64002275 [11504] pkivalidator.dll: Start
00000069 6.64005899 [11504] pkivalidator.dll: pExtraStatus = 0x00000000
00000070 6.64010525 [11504] pkivalidator.dll: pExtraPara = 0x00b1cf70
00000071 6.64016151 [11504] pkivalidator.dll: Start
00000072 6.64021826 [11504] pkivalidator.dll: No error encountered. Other checks can be performed - returning false.
00000073 6.64023399 [11504] pkivalidator.dll: Finish. Returning TRUE.
00000074 6.64027643 [11504] pkivalidator.dll: No error encountered. Other checks can be performed - returning false.
00000075 6.64035320 [11504] pkivalidator.dll: Finish. Returning TRUE.
00000076 6.64041424 [11504] pkivalidator.dll: No error encountered. Other checks can be performed - returning false.
00000077 6.64046431 [11504] pkivalidator.dll: Finish. Returning TRUE.
00000078 6.64051390 [11504] pkivalidator.dll: No error encountered. Other checks can be performed - returning false.
00000079 6.64062119 [11504] pkivalidator.dll: Certificate is valid
00000080 6.64065790 [11504] pkivalidator.dll: Finish. Returning TRUE.
00000081 6.64069891 [11504] cades.dll: #success#
00000082 6.64073515 [11504] cades.dll: #start#
00000083 6.64077044 [11504] cades.dll: #start#
00000084 6.64080620 [11504] cades.dll: #start#
00000085 6.64084053 [11504] cades.dll: #start#
00000086 6.64110947 [11504] cades.dll: #success#
00000087 6.64114666 [11504] cades.dll: #start#
00000088 6.64118195 [11504] cades.dll: #start#
00000089 6.64121771 [11504] cades.dll: #start#
00000090 6.64142609 [11504] cades.dll: #success#
00000091 6.64146280 [11504] cades.dll: #success#
00000092 6.64149857 [11504] cades.dll: #start#
00000093 6.64153290 [11504] cades.dll: #start#
00000094 6.64156818 [11504] cades.dll: #start#
00000095 6.64160442 [11504] cades.dll: #start#
00000096 6.64163923 [11504] cades.dll: #start#
00000097 6.64167356 [11504] cades.dll: #success#
00000098 6.64170837 [11504] cades.dll: #start#
00000099 6.64174318 [11504] cades.dll: #success#
00000100 6.64177799 [11504] cades.dll: #start#
00000101 6.64181280 [11504] cades.dll: #start#
00000102 6.64184761 [11504] cades.dll: #start#
00000103 6.64188528 [11504] cades.dll: #success#
00000104 6.64192104 [11504] cades.dll: #start#
00000105 6.64195538 [11504] cades.dll: #success#
00000106 6.64198923 [11504] cades.dll: #start#
00000107 6.64202309 [11504] cades.dll: #start#
00000108 6.64205742 [11504] cades.dll: #start#
00000109 6.64210987 [11504] cades.dll: #start#
00000110 6.64215517 [11504] cades.dll: #start#
00000111 6.64219809 [11504] cades.dll: #start#
00000112 6.64223433 [11504] cades.dll: #start#
00000113 6.64226961 [11504] cades.dll: #start#
00000114 6.64230490 [11504] cades.dll: #start#
00000115 6.64233828 [11504] cades.dll: #success#
00000116 6.64237309 [11504] cades.dll: #start#
00000117 6.64240694 [11504] cades.dll: #start#
00000118 6.64244127 [11504] cades.dll: #success#
00000119 6.64247561 [11504] cades.dll: #success#
00000120 6.64722300 [11504] cades.dll: signatureTimeStampToken recieved and added to signature
00000121 6.64731884 [11504] cades.dll: #start#
00000122 6.64735842 [11504] cades.dll: #start#
00000123 6.64930105 [11504] cades.dll: #start#
00000124 6.64934254 [11504] cades.dll: #start#
00000125 6.64937449 [11504] cades.dll: #start#
00000126 6.64940405 [11504] cades.dll: #success#
00000127 6.64943361 [11504] cades.dll: #start#
00000128 6.64946222 [11504] cades.dll: #start#
00000129 6.64949131 [11504] cades.dll: #start#
00000130 6.64951992 [11504] cades.dll: #success#
00000131 6.64955473 [11504] cades.dll: #start#
00000132 6.64958715 [11504] cades.dll: #success#
00000133 6.64961576 [11504] cades.dll: #start#
00000134 6.64965677 [11504] pkivalidator.dll: Start
00000135 6.64968824 [11504] pkivalidator.dll: pExtraStatus = 0x00000000
00000136 6.64971828 [11504] pkivalidator.dll: pExtraPara = 0x04e78964
00000137 6.64974737 [11504] pkivalidator.dll: Start
00000138 6.64977646 [11504] pkivalidator.dll: pExtraStatus = 0x00000000
00000139 6.64980555 [11504] pkivalidator.dll: pExtraPara = 0x00b1d760
00000140 6.64984083 [11504] pkivalidator.dll: Start
00000141 6.64987326 [11504] pkivalidator.dll: No error encountered. Other checks can be performed - returning false.
00000142 6.64990282 [11504] pkivalidator.dll: Finish. Returning TRUE.
00000143 6.64993334 [11504] pkivalidator.dll: No error encountered. Other checks can be performed - returning false.
00000144 6.64996290 [11504] pkivalidator.dll: Finish. Returning TRUE.
00000145 6.64999342 [11504] pkivalidator.dll: No error encountered. Other checks can be performed - returning false.
00000146 6.65002775 [11504] pkivalidator.dll: Finish. Returning TRUE.
00000147 6.65005827 [11504] cades.dll: #success#
00000148 6.65009117 [11504] cades.dll: #start#
00000149 6.65013170 [11504] cades.dll: #start#
00000150 6.65016747 [11504] cades.dll: #start#
00000151 6.65020275 [11504] cades.dll: #start#
00000152 6.65050983 [11504] cades.dll: #success#
00000153 6.65053940 [11504] cades.dll: #start#
00000154 6.65056849 [11504] cades.dll: #start#
00000155 6.65059757 [11504] cades.dll: #start#
00000156 6.65083504 [11504] cades.dll: #success#
00000157 6.65086508 [11504] cades.dll: #success#
00000158 6.65089989 [11504] cades.dll: #start#
00000159 6.65092897 [11504] cades.dll: #start#
00000160 6.65095758 [11504] cades.dll: #start#
00000161 6.65098619 [11504] cades.dll: #start#
00000162 6.65101480 [11504] cades.dll: #start#
00000163 6.65104294 [11504] cades.dll: #success#
00000164 6.65107155 [11504] cades.dll: #start#
00000165 6.65114498 [11504] cades.dll: #success#
00000166 6.65120029 [11504] cades.dll: #start#
00000167 6.65124989 [11504] cades.dll: #start#
00000168 6.65132141 [11504] cades.dll: #start#
00000169 6.65133238 [11504] cades.dll: #success#
00000170 6.65136576 [11504] cades.dll: #start#
00000171 6.65139437 [11504] cades.dll: #success#
00000172 6.65142298 [11504] cades.dll: #start#
00000173 6.65145111 [11504] cades.dll: #start#
00000174 6.65147924 [11504] cades.dll: #start#
00000175 6.65150738 [11504] cades.dll: #start#
00000176 6.65154219 [11504] cades.dll: #start#
00000177 6.65157080 [11504] cades.dll: #start#
00000178 6.65159941 [11504] cades.dll: #start#
00000179 6.65162754 [11504] cades.dll: #start#
00000180 6.65165567 [11504] cades.dll: #start#
00000181 6.65176821 [11504] cades.dll: #start#
00000182 6.65182447 [11504] ocspcli.dll: Loading GP...
00000183 6.65384007 [11504] ocspcli.dll: Loading GP...
00000184 6.65567970 [11504] cades.dll: Request object initialized
00000185 6.65575266 [11504] ocspcli.dll: Checking policies...
00000186 6.65579081 [11504] ocspcli.dll: Checking policies... OK.
00000187 6.65580845 [11504] ocspcli.dll: Making request...
00000188 6.65587759 [11504] ocspcli.dll: Filling SRs...
00000189 6.65593767 [11504] ocspcli.dll: Filling extensions...
00000190 6.65607691 [11504] ocspcli.dll: Encoding request...
00000191 6.65618849 [11504] ocspcli.dll: Making request... OK.
00000192 6.65831709 [11504] ocspcli.dll: Sending request to "http://ca.rzd/ocsp/ocsp.srf"...
00000193 6.65835571 [11504] ocspcli.dll: Checking HTTP policies...
00000194 6.65839434 [11504] ocspcli.dll: Checking HTTP policies... OK.
00000195 8.91424274 [11504] ocspcli.dll: Error occurred: 0x80072EE7. Level: 2
00000196 8.91442490 [11504] ocspcli.dll: Sending request to "http://ca.rzd.ru/ocsp/ocsp.srf"...
00000197 8.91460514 [11504] ocspcli.dll: Checking HTTP policies...
00000198 8.91473198 [11504] ocspcli.dll: Checking HTTP policies... OK.
00000199 8.94925785 [11504] cades.dll: Response from OCSP server recieved
00000200 8.96306133 [11504] cades.dll: stampTime >= response.get_SRThisUpdate(index)
00000201 8.96317577 [11504] cades.dll: (191) > 60 sec : TSP and OCSP time is out of sync
00000202 8.96599197 [11504] cades.dll: #success#
00000203 8.96634197 [11504] cades.dll: #failure# HRESULT: (0x800b010e)
00000204 8.96646214 [11504] cades.dll: Cannot find OCSP response for certificate.
00000205 8.96666336 [11504] cades.dll: Exception thrown: _hr
00000206 8.96690750 [11504] cades.dll: COleException, m_sc=0x800b010e
00000207 8.96699047 [11504] cades.dll: (res=0, GetLastError=0x800b010e
00000208 8.96706772 [11504] cades.dll: Expression FAILED: ::CadesMsgEnhanceSignature(msgDecode.GetHandle(), 0, &cadesSignPara)
00000209 8.96714211 [11504] cades.dll: Last win32 error thrown as exception
00000210 8.96740913 [11504] cades.dll: COleException, m_sc=0x800b010e
00000211 8.96748829 [11504] cades.dll: (res=0, GetLastError=0x800b010e
Насколько я понял два ocsp сервиса должны работать, пока хотя бы один доступен. Можете ли вы как-то прокомментировать эту ошибку?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
00000199 8.94925785 [11504] cades.dll: Response from OCSP server recieved 00000200 8.96306133 [11504] cades.dll: stampTime >= response.get_SRThisUpdate(index) 00000201 8.96317577 [11504] cades.dll: (191) > 60 sec : TSP and OCSP time is out of sync 00000202 8.96599197 [11504] cades.dll: #success# 00000203 8.96634197 [11504] cades.dll: #failure# HRESULT: (0x800b010e) 00000204 8.96646214 [11504] cades.dll: Cannot find OCSP response for certificate. ключевые слова TSP and OCSP time is out of sync |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.04.2015(UTC) Сообщений: 36 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Причина действительно была в несоответствии TSP и OCSP сервисов.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close