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

Уведомление

Icon
Error

9 Страницы<12345>»
Опции
К последнему сообщению К первому непрочитанному
Offline Zet  
#21 Оставлено : 21 января 2015 г. 10:39:48(UTC)
Zet

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Автор: strelok671 Перейти к цитате
Автор: Zet Перейти к цитате

Здравтсвуйте. Сегодня отправлял сообщения, раньше все норманльно было, а вот час отправляю ошибка приходит. Вы не сталкивались с таким?
com.otr.sufd.cryptowebservice.FaultMessage: UNKNOWN error: com.otr.cryptonew.jcaimpl.mcabridge.MCAError: CertCreateCertificateContext: Not enough storage is available to complete this operation. (0x8007000e)
Если фидлером отправлять сообщение этоже раз 15 приходит ошибка com.otr.sufd.cryptowebservice.FaultMessage: SIGN_ERROR error: Ошибка подписи. Изначально ошибка происходит из-за ошибки подписи?


Честно говоря, я один раз отладился и забыл. Такой ошибки вроде не было, но явно что-то сломалось на сервере. Вопрос к смэву или казначейству.


Да у них что-то было.
Offline Zet  
#22 Оставлено : 28 января 2015 г. 14:35:01(UTC)
Zet

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
1

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

Offline Zet  
#23 Оставлено : 28 января 2015 г. 14:40:04(UTC)
Zet

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Автор: strelok671 Перейти к цитате
Автор: Zet Перейти к цитате

Здравтсвуйте. Сегодня отправлял сообщения, раньше все норманльно было, а вот час отправляю ошибка приходит. Вы не сталкивались с таким?
com.otr.sufd.cryptowebservice.FaultMessage: UNKNOWN error: com.otr.cryptonew.jcaimpl.mcabridge.MCAError: CertCreateCertificateContext: Not enough storage is available to complete this operation. (0x8007000e)
Если фидлером отправлять сообщение этоже раз 15 приходит ошибка com.otr.sufd.cryptowebservice.FaultMessage: SIGN_ERROR error: Ошибка подписи. Изначально ошибка происходит из-за ошибки подписи?


Честно говоря, я один раз отладился и забыл. Такой ошибки вроде не было, но явно что-то сломалось на сервере. Вопрос к смэву или казначейству.


Снова здравствуйте! У меня к вам вопрос. Вот когда вы отправляете платеж по существующему начислению и потом запрашиваете по вернувшемуся ID статус пакета у вас все нормально проходит?
Offline strelok671  
#24 Оставлено : 31 января 2015 г. 17:25:27(UTC)
strelok671

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 2 раз в 2 постах
Автор: Zet Перейти к цитате

Снова здравствуйте! У меня к вам вопрос. Вот когда вы отправляете платеж по существующему начислению и потом запрашиваете по вернувшемуся ID статус пакета у вас все нормально проходит?


Да, тест прошли нормально.
Offline Zet  
#25 Оставлено : 26 февраля 2015 г. 14:24:19(UTC)
Zet

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Автор: strelok671 Перейти к цитате
Автор: Zet Перейти к цитате

Снова здравствуйте! У меня к вам вопрос. Вот когда вы отправляете платеж по существующему начислению и потом запрашиваете по вернувшемуся ID статус пакета у вас все нормально проходит?


Да, тест прошли нормально.


Вот час на сервере включили проверку ЭП. У вас пакеты принимаются нормально? Можете показать соап пакет отправляемых данных, чтобы сравнить тэги, если не трудно?

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

Offline kkklll  
#26 Оставлено : 5 мая 2015 г. 10:47:42(UTC)
kkklll

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 2 раз в 2 постах
день добрый!
Удалось ли кому-нибудь реализовать взаимодействие с ГИС ГМП версии 1.16.1 после того, как они включили проверку подписи?
в настоящий момент начисление отправляется, но при запросе статуса обработки получаю "ЭП под сущностью неверна".

в для подписывания использовал код из этой темы от maxdm

код следующий:
Код:

public override object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
{
	var xml = GetMessageXml(request);
	var elements = xml.GetElementsByTagName("Charge");
  if (elements.Count > 0)
  	XadesSignatureHelper.SignElement(elements[0], Certificates.Authority);
	RebuildMessage(ref request, xml);
	return null;
}


и сам XadesSignatureHelper (за основу брал Xades-master\Source\TestClient\MainForm.cs):

Код:

    public class XadesSignatureHelper
    {
        public static void SignElement(XmlNode elementToSign, X509Certificate2 certificate)
        {
            if (elementToSign == null)
                throw new ArgumentNullException("elementToSign");
            if (elementToSign.Attributes == null)
                throw new ArgumentOutOfRangeException("elementToSign", "elementToSign.Attributes == null");

            var attr = elementToSign.Attributes["Id"];
            if (attr == null)
                throw new ArgumentOutOfRangeException("elementToSign", "elementToSign не имеет атрибут Id");
            var chargeId = attr.Value;

            //var xadesSignedXml = new XadesSignedXml(envelopedSignatureXmlDocument);

            var tmpDoc = new XmlDocument() { PreserveWhitespace = true };
            tmpDoc.AppendChild(tmpDoc.ImportNode(elementToSign, true));
            var xadesSignedXml = new XadesSignedXml(tmpDoc);
            

            var reference = new Reference
            {
                DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411",
                Uri = "#" + chargeId
            };

            reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
            reference.AddTransform(new XmlDsigExcC14NTransform());

            xadesSignedXml.AddReference(reference);

            //----------------------AddCertificateInfoToSignature

            var key = certificate.PrivateKey;
            if (key == null)
                throw new ApplicationException("PrivateKey == null");
            xadesSignedXml.SigningKey = key;

            var keyInfo = new KeyInfo();
            keyInfo.AddClause(new KeyInfoX509Data((X509Certificate)certificate));
            //keyInfo.AddClause(new RSAKeyValue((RSACryptoServiceProvider)key));
            xadesSignedXml.KeyInfo = keyInfo;

            //----------------------addXadesInfoButton_Click

            xadesSignedXml.Signature.Id = "signatureId";
            var xadesObject = new XadesObject { Id = "XadesObject", QualifyingProperties = { Target = "#signatureId" } };
            AddSignedSignatureProperties(
                xadesObject.QualifyingProperties.SignedProperties.SignedSignatureProperties,
                xadesObject.QualifyingProperties.SignedProperties.SignedDataObjectProperties,
                xadesObject.QualifyingProperties.UnsignedProperties.UnsignedSignatureProperties,
                certificate);

            xadesSignedXml.AddXadesObject(xadesObject);

            //----------------computeSignatureButton_Click

            xadesSignedXml.SignedInfo.SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
            xadesSignedXml.SignedInfo.CanonicalizationMethod = new XmlDsigExcC14NTransform().Algorithm;
            xadesSignedXml.ComputeSignature();
            xadesSignedXml.SignatureValueId = "signatureValueId";

            //----------------------

            #region requestTimeStampButton_Click

            if (xadesSignedXml.SignatureStandard == KnownSignatureStandard.Xades)
            {
                try
                {
                    var httpTSAClient = new HttpTsaClient();
                    httpTSAClient.RequestTsaCertificate = true; // this.tsaCertificateInResponseCheckBox.Checked;
                    var signatureValueElementXpaths = new ArrayList {"ds:SignatureValue"};
                    var elementIdValues = new ArrayList();
                    var signatureValueHash = httpTSAClient.ComputeHashValueOfElementList(xadesSignedXml.GetXml(),
                                                                                            signatureValueElementXpaths,
                                                                                            ref elementIdValues);
                    httpTSAClient.SendTsaWebRequest("http://testca.cryptopro.ru/tsp/tsp.srf", signatureValueHash);
                    var tsaResponsePkiStatus = httpTSAClient.ParseTsaResponse();
                    if (tsaResponsePkiStatus == KnownTsaResponsePkiStatus.Granted)
                    {
                        var signatureTimeStamp = new TimeStamp("SignatureTimeStamp")
                                                     {
                                                         EncapsulatedTimeStamp =
                                                             {
                                                                 Id = "SignatureTimeStampId",
                                                                 PkiData = httpTSAClient.TsaTimeStamp
                                                             }
                                                     };
                        // this.signatureTimeStampIdTextBox.Text;
                        var hashDataInfo = new HashDataInfo {UriAttribute = "#" + elementIdValues[0]};
                        signatureTimeStamp.HashDataInfoCollection.Add(hashDataInfo);
                        var unsignedProperties = xadesSignedXml.UnsignedProperties;
                        unsignedProperties.UnsignedSignatureProperties.SignatureTimeStampCollection.Add(signatureTimeStamp);
                        xadesSignedXml.UnsignedProperties = unsignedProperties;

                        var xml = xadesSignedXml.XadesObject.GetXml();
                        var xml1 = xadesSignedXml.GetXml();

                        elementToSign.AppendChild(elementToSign.OwnerDocument.ImportNode(xadesSignedXml.GetXml(), true));
                    }
                    else
                        throw new ApplicationException("TSA timestamp request not granted: " + tsaResponsePkiStatus.ToString());
                }
                catch (Exception exception)
                {
                    throw new ApplicationException("Exception occurred during TSA timestamp request: " + exception.ToString());
                }
            }
            else
                throw new ApplicationException(
                    "Signature standard should be XAdES. (You need to add XAdES info before computing the signature to be able to inject a timestamp)");

            #endregion requestTimeStampButton_Click

            //-------------------------------------------------
        }

        private static void AddSignedSignatureProperties(SignedSignatureProperties signedSignatureProperties, SignedDataObjectProperties signedDataObjectProperties,
            UnsignedSignatureProperties unsignedSignatureProperties, X509Certificate2 certificate)
        {
            XmlDocument xmlDocument;
            Cert cert;

            //xmlDocument = new XmlDocument();

            cert = new Cert();
            cert.IssuerSerial.X509IssuerName = certificate.IssuerName.Name;
            cert.IssuerSerial.X509SerialNumber = certificate.SerialNumber;
            cert.CertDigest.DigestMethod.Algorithm = SignedXml.XmlDsigSHA1Url;
            cert.CertDigest.DigestValue = certificate.GetCertHash();
            signedSignatureProperties.SigningCertificate.CertCollection.Add(cert);
            signedSignatureProperties.SigningTime = DateTime.Now;
            signedSignatureProperties.SignaturePolicyIdentifier.SignaturePolicyImplied = true;
        }
    }


так же в коде XadesSignedXml.cs внёс правки (в контрольных примерах от ГИС ГМП такие версии):
Код:

public const string XadesNamespaceUri = "http://uri.etsi.org/01903/v1.1.1#"; // было "http://uri.etsi.org/01903/v1.3.2#";
public const string SignedPropertiesType = "http://uri.etsi.org/01903/v1.1.1#SignedProperties";  // было "http://uri.etsi.org/01903/v1.3.2#SignedProperties";


просьба намекнуть в какую сторону копать)
Offline Zet  
#27 Оставлено : 5 мая 2015 г. 12:59:38(UTC)
Zet

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Автор: kkklll Перейти к цитате
день добрый!
Удалось ли кому-нибудь реализовать взаимодействие с ГИС ГМП версии 1.16.1 после того, как они включили проверку подписи?
в настоящий момент начисление отправляется, но при запросе статуса обработки получаю "ЭП под сущностью неверна".

в для подписывания использовал код из этой темы от maxdm

код следующий:
Код:

public override object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
{
	var xml = GetMessageXml(request);
	var elements = xml.GetElementsByTagName("Charge");
  if (elements.Count > 0)
  	XadesSignatureHelper.SignElement(elements[0], Certificates.Authority);
	RebuildMessage(ref request, xml);
	return null;
}


и сам XadesSignatureHelper (за основу брал Xades-master\Source\TestClient\MainForm.cs):

Код:

    public class XadesSignatureHelper
    {
        public static void SignElement(XmlNode elementToSign, X509Certificate2 certificate)
        {
            if (elementToSign == null)
                throw new ArgumentNullException("elementToSign");
            if (elementToSign.Attributes == null)
                throw new ArgumentOutOfRangeException("elementToSign", "elementToSign.Attributes == null");

            var attr = elementToSign.Attributes["Id"];
            if (attr == null)
                throw new ArgumentOutOfRangeException("elementToSign", "elementToSign не имеет атрибут Id");
            var chargeId = attr.Value;

            //var xadesSignedXml = new XadesSignedXml(envelopedSignatureXmlDocument);

            var tmpDoc = new XmlDocument() { PreserveWhitespace = true };
            tmpDoc.AppendChild(tmpDoc.ImportNode(elementToSign, true));
            var xadesSignedXml = new XadesSignedXml(tmpDoc);
            

            var reference = new Reference
            {
                DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411",
                Uri = "#" + chargeId
            };

            reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
            reference.AddTransform(new XmlDsigExcC14NTransform());

            xadesSignedXml.AddReference(reference);

            //----------------------AddCertificateInfoToSignature

            var key = certificate.PrivateKey;
            if (key == null)
                throw new ApplicationException("PrivateKey == null");
            xadesSignedXml.SigningKey = key;

            var keyInfo = new KeyInfo();
            keyInfo.AddClause(new KeyInfoX509Data((X509Certificate)certificate));
            //keyInfo.AddClause(new RSAKeyValue((RSACryptoServiceProvider)key));
            xadesSignedXml.KeyInfo = keyInfo;

            //----------------------addXadesInfoButton_Click

            xadesSignedXml.Signature.Id = "signatureId";
            var xadesObject = new XadesObject { Id = "XadesObject", QualifyingProperties = { Target = "#signatureId" } };
            AddSignedSignatureProperties(
                xadesObject.QualifyingProperties.SignedProperties.SignedSignatureProperties,
                xadesObject.QualifyingProperties.SignedProperties.SignedDataObjectProperties,
                xadesObject.QualifyingProperties.UnsignedProperties.UnsignedSignatureProperties,
                certificate);

            xadesSignedXml.AddXadesObject(xadesObject);

            //----------------computeSignatureButton_Click

            xadesSignedXml.SignedInfo.SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
            xadesSignedXml.SignedInfo.CanonicalizationMethod = new XmlDsigExcC14NTransform().Algorithm;
            xadesSignedXml.ComputeSignature();
            xadesSignedXml.SignatureValueId = "signatureValueId";

            //----------------------

            #region requestTimeStampButton_Click

            if (xadesSignedXml.SignatureStandard == KnownSignatureStandard.Xades)
            {
                try
                {
                    var httpTSAClient = new HttpTsaClient();
                    httpTSAClient.RequestTsaCertificate = true; // this.tsaCertificateInResponseCheckBox.Checked;
                    var signatureValueElementXpaths = new ArrayList {"ds:SignatureValue"};
                    var elementIdValues = new ArrayList();
                    var signatureValueHash = httpTSAClient.ComputeHashValueOfElementList(xadesSignedXml.GetXml(),
                                                                                            signatureValueElementXpaths,
                                                                                            ref elementIdValues);
                    httpTSAClient.SendTsaWebRequest("http://testca.cryptopro.ru/tsp/tsp.srf", signatureValueHash);
                    var tsaResponsePkiStatus = httpTSAClient.ParseTsaResponse();
                    if (tsaResponsePkiStatus == KnownTsaResponsePkiStatus.Granted)
                    {
                        var signatureTimeStamp = new TimeStamp("SignatureTimeStamp")
                                                     {
                                                         EncapsulatedTimeStamp =
                                                             {
                                                                 Id = "SignatureTimeStampId",
                                                                 PkiData = httpTSAClient.TsaTimeStamp
                                                             }
                                                     };
                        // this.signatureTimeStampIdTextBox.Text;
                        var hashDataInfo = new HashDataInfo {UriAttribute = "#" + elementIdValues[0]};
                        signatureTimeStamp.HashDataInfoCollection.Add(hashDataInfo);
                        var unsignedProperties = xadesSignedXml.UnsignedProperties;
                        unsignedProperties.UnsignedSignatureProperties.SignatureTimeStampCollection.Add(signatureTimeStamp);
                        xadesSignedXml.UnsignedProperties = unsignedProperties;

                        var xml = xadesSignedXml.XadesObject.GetXml();
                        var xml1 = xadesSignedXml.GetXml();

                        elementToSign.AppendChild(elementToSign.OwnerDocument.ImportNode(xadesSignedXml.GetXml(), true));
                    }
                    else
                        throw new ApplicationException("TSA timestamp request not granted: " + tsaResponsePkiStatus.ToString());
                }
                catch (Exception exception)
                {
                    throw new ApplicationException("Exception occurred during TSA timestamp request: " + exception.ToString());
                }
            }
            else
                throw new ApplicationException(
                    "Signature standard should be XAdES. (You need to add XAdES info before computing the signature to be able to inject a timestamp)");

            #endregion requestTimeStampButton_Click

            //-------------------------------------------------
        }

        private static void AddSignedSignatureProperties(SignedSignatureProperties signedSignatureProperties, SignedDataObjectProperties signedDataObjectProperties,
            UnsignedSignatureProperties unsignedSignatureProperties, X509Certificate2 certificate)
        {
            XmlDocument xmlDocument;
            Cert cert;

            //xmlDocument = new XmlDocument();

            cert = new Cert();
            cert.IssuerSerial.X509IssuerName = certificate.IssuerName.Name;
            cert.IssuerSerial.X509SerialNumber = certificate.SerialNumber;
            cert.CertDigest.DigestMethod.Algorithm = SignedXml.XmlDsigSHA1Url;
            cert.CertDigest.DigestValue = certificate.GetCertHash();
            signedSignatureProperties.SigningCertificate.CertCollection.Add(cert);
            signedSignatureProperties.SigningTime = DateTime.Now;
            signedSignatureProperties.SignaturePolicyIdentifier.SignaturePolicyImplied = true;
        }
    }


так же в коде XadesSignedXml.cs внёс правки (в контрольных примерах от ГИС ГМП такие версии):
Код:

public const string XadesNamespaceUri = "http://uri.etsi.org/01903/v1.1.1#"; // было "http://uri.etsi.org/01903/v1.3.2#";
public const string SignedPropertiesType = "http://uri.etsi.org/01903/v1.1.1#SignedProperties";  // было "http://uri.etsi.org/01903/v1.3.2#SignedProperties";


просьба намекнуть в какую сторону копать)

Если вы брали за основу XadesSignedXml который сделан подразделением майкрософт, то он не правильно считает сигнатуру. Я не знаю почему это так. Используйте просто SignedXml который библиотечный и там сами дописывайте тэги для формирования подписи Xades
Offline strelok671  
#28 Оставлено : 7 мая 2015 г. 20:46:26(UTC)
strelok671

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 2 раз в 2 постах
Наконец-то ответили разработчики криптосервиса. Ошибка из-за того, что для формирования штампа времени использовалась функция sha-1 вместо госта. Пока не разбирался как исправить, просто занят другой задачей.
Offline kkklll  
#29 Оставлено : 8 мая 2015 г. 12:07:50(UTC)
kkklll

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 2 раз в 2 постах
Автор: strelok671 Перейти к цитате
Наконец-то ответили разработчики криптосервиса. Ошибка из-за того, что для формирования штампа времени использовалась функция sha-1 вместо госта. Пока не разбирался как исправить, просто занят другой задачей.


Это про результат от "http://testca.cryptopro.ru/tsp/tsp.srf" или ещё про что-то?
просто что касается TSA сервера, (пока для теста) то казна сказала:
«Федеральное казначейство не предоставляет собственный TSA-сервер для простановки метки времени.
Участники могут использовать любой сертифицированный TSA-сервер»
Offline strelok671  
#30 Оставлено : 8 мая 2015 г. 19:26:33(UTC)
strelok671

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 2 раз в 2 постах
Автор: kkklll Перейти к цитате
Автор: strelok671 Перейти к цитате
Наконец-то ответили разработчики криптосервиса. Ошибка из-за того, что для формирования штампа времени использовалась функция sha-1 вместо госта. Пока не разбирался как исправить, просто занят другой задачей.


Это про результат от "http://testca.cryptopro.ru/tsp/tsp.srf" или ещё про что-то?
просто что касается TSA сервера, (пока для теста) то казна сказала:
«Федеральное казначейство не предоставляет собственный TSA-сервер для простановки метки времени.
Участники могут использовать любой сертифицированный TSA-сервер»


Нет, это про формирование хеш функции для штампа времени с помощью microsoft.xades. Там не хватает атрибутов, нужных для гостового хеша, а без атрибутов получается использовать только sha-1. Для правильной подписи гостом придется либо дорабатывать их классы, либо формировать атрибуты вручную.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
9 Страницы<12345>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.