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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline vas239  
#1 Оставлено : 10 февраля 2015 г. 14:25:58(UTC)
vas239

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

Группы: Участники
Зарегистрирован: 10.02.2015(UTC)
Сообщений: 37
Российская Федерация
Откуда: Санкт-Петербург

Сказал(а) «Спасибо»: 7 раз
Создаю усовершенствованную подпись с тестовым сервером времени - http://cryptopro.ru/tsp/:

_sign = function (thumbprint, dataToSign) {
var store = _getStore(),
storeLocation = _detectStoreLocation(store),
signedData,
certificates,
certificate,
signer,
signedMessage = null;

if (store !== null && storeLocation !== null) {
store.Open(storeLocation, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
certificates = store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprint);
if (certificates.Count === 0) {
return null;
}
certificate = certificates.Item(1);

signer = _objCreate('CAdESCOM.CPSigner');
signer.Certificate = certificate;
signer.TSAAddress = "http://cryptopro.ru/tsp/";

signedData = _objCreate('CAdESCOM.CadesSignedData');
// Значение свойства ContentEncoding должно быть задано до заполнения свойства Content
signedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
signedData.Content = dataToSign;

try {
signedMessage = signedData.SignCades(signer, CADESCOM_CADES_X_LONG_TYPE_1);
} catch (err) {
console.log("Failed to create signature. Error: " + _GetErrorMessage(err));
}
store.Close();
return signedMessage;
}
return null;
}

Получаю ошибку:
Failed to create signature. Error: The revocation process could not continue - the certificate(s) could not be checked. (0x800B010E)

Сделала все как написано тут - http://www.cryptopro.ru/...sts&t=4577#post25846

В логе:

00001813 188.42036438 [5112] cades.dll: {3732} /COcspCheck::COcspTimeSyncHandler::OnResponse/ RevocationCheck.h(569) : Response from OCSP server recieved
00001814 188.42291260 [5112] cades.dll: {3732} /COcspCheck::COcspTimeSyncHandler::OnResponse/ RevocationCheck.h(605) : stampTime >= response.get_SRThisUpdate(index)
00001815 188.42295837 [5112] cades.dll: {3732} /COcspCheck::COcspTimeSyncHandler::OnResponse/ RevocationCheck.h(610) : (413) > 60 sec : TSP and OCSP time is out of sync
00001816 188.42333984 [5112] cades.dll: {3732} /COcspCheck::retrieveOcspResponse/ RevocationCheck.h(733) : #success#
00001817 188.42340088 [5112] 12:45:33.682 ::WinHttpCloseHandle(0x7426c0)
00001818 188.42341614 [5112] 12:45:33.682 ::winhttp-dll is shutting down
00001819 188.42346191 [5112] 12:45:33.682 ::Indicate Status 0x7426c0, 0x0, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING (2048), 0x1ed188 [0x7426c0], 4
00001820 188.42347717 [5112] 12:45:33.682 ::WinHttpCloseHandle() returning TRUE
00001821 188.42350769 [5112] cades.dll: {3732} /COcspCheck::checkRevocation/ RevocationCheck.h(385) : #failure# HRESULT: (0x800b010e)
00001822 188.42353821 [5112] cades.dll: {3732} /COcspCheck::checkRevocation/ RevocationCheck.h(385) : Cannot find OCSP response for certificate.
00001823 188.42358398 [5112] cades.dll: {3732} /CadesMsgEnhanceSignatureImpl/ cades.cpp(1137) : Exception thrown: _hr
00001824 188.42367554 [5112] cades.dll: {3732} /CadesMsgEnhanceSignature/ cades.cpp(1172) : COleException, m_sc=0x800b010e
00001825 188.42369080 [5112] cades.dll: {3732} /CadesMsgEnhanceSignature/ cades.cpp(1184) : (res=0, GetLastError=0x800b010e
00001826 188.42372131 [5112] cades.dll: {3732} /CadesSignMessageImpl/ cades.cpp(2143) : Expression FAILED: ::CadesMsgEnhanceSignature(msgDecode.GetHandle(), 0, &cadesSignPara)
00001827 188.42373657 [5112] cades.dll: {3732} /CadesSignMessageImpl/ cades.cpp(2143) : Last win32 error thrown as exception
00001828 188.42381287 [5112] cades.dll: {3732} /CadesSignMessage/ cades.cpp(2190) : COleException, m_sc=0x800b010e
00001829 188.42384338 [5112] cades.dll: {3732} /CadesSignMessage/ cades.cpp(2202) : (res=0, GetLastError=0x800b010e

Offline Новожилова Елена  
#2 Оставлено : 10 февраля 2015 г. 15:08:24(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
TSP and OCSP time is out of sync

Часы на службе OCSP, которую вы используете, отстают от времени на нашей тестовой службе штампов больше чем на минуту.
Полученный OCSP-ответ содержит время более раннее, чем штамп времени на подпись и не может служить доказательством действительности сертификата в момент создания подписи.

Отредактировано пользователем 10 февраля 2015 г. 15:09:36(UTC)  | Причина: Не указана

Offline vas239  
#3 Оставлено : 10 февраля 2015 г. 15:56:17(UTC)
vas239

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

Группы: Участники
Зарегистрирован: 10.02.2015(UTC)
Сообщений: 37
Российская Федерация
Откуда: Санкт-Петербург

Сказал(а) «Спасибо»: 7 раз
Автор: Новожилова Елена Перейти к цитате
TSP and OCSP time is out of sync

Часы на службе OCSP, которую вы используете, отстают от времени на нашей тестовой службе штампов больше чем на минуту.
Полученный OCSP-ответ содержит время более раннее, чем штамп времени на подпись и не может служить доказательством действительности сертификата в момент создания подписи.


А как тогда можно проверить подпись? (используя тестовый OCSP-сервер http://www.cryptopro.ru/ocsp/ocsp.srf и тестовый TSP-сервер http://www.cryptopro.ru/tsp/tsp.srf)

Offline Новожилова Елена  
#4 Оставлено : 10 февраля 2015 г. 17:22:25(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Вы используете тестовый сертификат, выданный нашим тестовым центром сертификации http://cryptopro.ru/certsrv/ ?
Попробуйте использовать службу штампов по адресу http://testca.cryptopro.ru/tsp/
thanks 1 пользователь поблагодарил Новожилова Елена за этот пост.
vas239 оставлено 12.02.2015(UTC)
Offline vas239  
#5 Оставлено : 12 февраля 2015 г. 18:55:22(UTC)
vas239

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

Группы: Участники
Зарегистрирован: 10.02.2015(UTC)
Сообщений: 37
Российская Федерация
Откуда: Санкт-Петербург

Сказал(а) «Спасибо»: 7 раз
Автор: Новожилова Елена Перейти к цитате
Вы используете тестовый сертификат, выданный нашим тестовым центром сертификации http://cryptopro.ru/certsrv/ ?
Попробуйте использовать службу штампов по адресу http://testca.cryptopro.ru/tsp/


Спасибо, теперь подпись создается. Но у меня еще один вопрос.

После создания подписи я ее проверяю:

_verify = function (signedMessage, dataToVerify) {
var signedData = _objCreate('CAdESCOM.CadesSignedData');

try {
// Значение свойства ContentEncoding должно быть задано до заполнения свойства Content
signedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
signedData.Content = dataToVerify;
signedData.VerifyCades(signedMessage, CADESCOM_CADES_X_LONG_TYPE_1);
console.log(signedData.Signers.Item(1).SignatureTimeStampTime);
} catch (err) {
return false;
}

return true;
};

Проверка проходит успешно и в консоль выводится время - console.log(signedData.Signers.Item(1).SignatureTimeStampTime).

Но когда я достаю информацию про время на серверной стороне:

private static void printSignatureInfo(final String signatureBase64) throws CAdESException {
final byte[] decode = Base64.decode(signatureBase64);
final CAdESSignature cadesSignature = new CAdESSignature(decode, null, null);
printSignatureInfo(cadesSignature);
}

/**
* Вывод информации о подписи: кто подписал, тип подписи, штампы времени.
*
* @param signature CAdES подпись.
*/
private static void printSignatureInfo(final CAdESSignature signature) {
// Список подписей.
int signerIndex = 1;
for (CAdESSigner signer : signature.getCAdESSignerInfos()) {
printSignerInfo(signer, signerIndex++, "");
}
}

/**
* Вывод информации об отдельной подписи.
*
* @param signer Подпись.
* @param index Индекс подписи.
* @param tab Отступ для удобства печати.
*/
private static void printSignerInfo(final CAdESSigner signer, final int index, final String tab) {

final X509Certificate signerCert = signer.getSignerCertificate();

System.out.println(tab + " Signature #" + index + " (" +
CAdESType.getSignatureTypeName(signer.getSignatureType()) + ")" +
(signerCert != null ? (" verified by " + signerCert.getSubjectDN()) : ""));

if (signer.getSignatureType() == CAdESType.CAdES_X_Long_Type_1) {

TimeStampToken signatureTimeStamp = signer.getSignatureTimestampToken();
TimeStampToken cadesCTimeStamp = signer.getCAdESCTimestampToken();

if (signatureTimeStamp != null) {
System.out.println(tab + TAG + " Signature timestamp set: " +
signatureTimeStamp.getTimeStampInfo().getGenTime());
}

if (cadesCTimeStamp != null) {
System.out.println(tab + TAG + " CAdES-C timestamp set: " +
cadesCTimeStamp.getTimeStampInfo().getGenTime());
}
}

printCountersignerInfos(signer.getCAdESCountersignerInfos());
}

signatureTimeStamp = null;
cadesCTimeStamp = null;

Как мне получить информацию про время на сервере?
Offline Евгений Афанасьев  
#6 Оставлено : 12 февраля 2015 г. 19:58:38(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,924
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Автор: vas239 Перейти к цитате

final byte[] decode = Base64.decode(signatureBase64);
final CAdESSignature cadesSignature = new CAdESSignature(decode, null, null);
printSignatureInfo(cadesSignature);

Как мне получить информацию про время на сервере?

После выполнения проверки verify() у cadesSignature поля будут заполнены.

Offline vas239  
#7 Оставлено : 13 февраля 2015 г. 13:42:47(UTC)
vas239

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

Группы: Участники
Зарегистрирован: 10.02.2015(UTC)
Сообщений: 37
Российская Федерация
Откуда: Санкт-Петербург

Сказал(а) «Спасибо»: 7 раз
Автор: afev Перейти к цитате
Автор: vas239 Перейти к цитате

final byte[] decode = Base64.decode(signatureBase64);
final CAdESSignature cadesSignature = new CAdESSignature(decode, null, null);
printSignatureInfo(cadesSignature);

Как мне получить информацию про время на сервере?

После выполнения проверки verify() у cadesSignature поля будут заполнены.




Вызываю метод verify() у cadesSignature:

INFO: Built chain contains next certificates:
фев 13, 2015 2:34:31 PM ru.CryptoPro.CAdES.b.d.b a
INFO: [1] certificate
serial number: 1200000fe163273b6421c1d5e3000000000fe1
subject: CN=Тестовая служба TSP на testca.cryptopro.ru, O="ООО \"КРИПТО-ПРО\"", L=Москва, ST=Москва, C=RU
issuer: CN=CRYPTO-PRO Test Center 2, O=CRYPTO-PRO LLC, L=Moscow, C=RU, EMAILADDRESS=support@cryptopro.ru
фев 13, 2015 2:34:31 PM ru.CryptoPro.CAdES.b.d.b a
INFO: [T] Chain trusted certificate
serial number: 2b6e3351fd6eb2ad48200203cb5ba141
subject: CN=CRYPTO-PRO Test Center 2, O=CRYPTO-PRO LLC, L=Moscow, C=RU, EMAILADDRESS=support@cryptopro.ru
фев 13, 2015 2:34:32 PM ru.CryptoPro.CAdES.exception.CAdESException <init>
SEVERE: Root certificate Sn 2b6e3351fd6eb2ad48200203cb5ba141, subject CN=CRYPTO-PRO Test Center 2, O=CRYPTO-PRO LLC, L=Moscow, C=RU, EMAILADDRESS=support@cryptopro.ru is untrusted.
фев 13, 2015 2:34:32 PM ru.CryptoPro.CAdES.exception.CAdESException <init>
SEVERE: There is no any valid CAdES-C-time-stamp and signature-time-stamp. Enable and see detailes into the JRE trace log.
Disconnected from the target VM, address: '127.0.0.1:56714', transport: 'socket'
There is no any valid CAdES-C-time-stamp and signature-time-stamp. Enable and see detailes into the JRE trace log., errors: 'Signature timestamp is invalid' (34)

Хотя на клиенте повторюсь, проверка проходит.

Отредактировано пользователем 13 февраля 2015 г. 14:15:19(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#8 Оставлено : 13 февраля 2015 г. 14:21:04(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,924
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
В cacerts все корневые положили?
Offline vas239  
#9 Оставлено : 13 февраля 2015 г. 14:32:29(UTC)
vas239

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

Группы: Участники
Зарегистрирован: 10.02.2015(UTC)
Сообщений: 37
Российская Федерация
Откуда: Санкт-Петербург

Сказал(а) «Спасибо»: 7 раз
Автор: afev Перейти к цитате
В cacerts все корневые положили?


Я добавила в Trusted Root Certification Authorities корневой тестового сертификата и сертификата времени.
Offline Евгений Афанасьев  
#10 Оставлено : 13 февраля 2015 г. 16:37:51(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,924
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Не понял, в JRE/lib/ext/security/cacerts? Вы ведь в java-коде проверяете.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.