Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ 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)
Сообщений: 934
Женщина
Откуда: Крипто-Про

Поблагодарили: 111 раз в 101 постах
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)
Сообщений: 934
Женщина
Откуда: Крипто-Про

Поблагодарили: 111 раз в 101 постах
Вы используете тестовый сертификат, выданный нашим тестовым центром сертификации 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)
Сообщений: 4,049
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 733 раз в 691 постах
Автор: 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)
Сообщений: 4,049
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 733 раз в 691 постах
В 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)
Сообщений: 4,049
Российская Федерация
Откуда: Крипто-Про

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