Показать/Скрыть содержание

    Подпись документов ФТС

    Настройка Сервиса Подписи

    XPath с поддержкой пространств имен:

    Add-SignTransformPlugin -DisplayName SignServer -Assembly "C:\Program Files\Crypto Pro\DSS\SignServer\rest\bin\CryptoPro.DSS.Common.Cryptography.dll" -Classname CryptoPro.DSS.Common.Cryptography.Xml.XmlDsigXPathTransformWithNamespaces -Identifiers "http://www.w3.org/TR/1999/REC-xpath-19991116"
    

    Преобразование ФТС:

    Add-SignTransformPlugin -DisplayName SignServer -Assembly CryptoPro.Plugins.Xml.Transforms.dll -Classname CryptoPro.Plugins.Xml.Transforms.XmlFssTransform -Identifiers "urn:xml-dsig:transformation:v1.1"
    

    Шаблон узла подписи

    Подпись документов ФТС выполняется как XML-подпись по шаблону. Подписываемый документ должен быть предварительно подготовлен. В документ должен быть добавлен шаблон подписи - узел Signature.

    В шаблоне узла подписи обязано присутствовать преобразование urn:xml-dsig:transformation:v1.1. Так же преобразование должно быть указано в качестве метода каноникализации.

    Наличие других преобразований зависит от специфики размещения узла подписи в XML документе и иных факторов. В примере ниже добавлено XPath-преобразование not(ancestor-or-self::dsig:Signature) для исключения узла подписи из расчета хэш значения. Что было обусловлено невозможностью использовать стандартное преобразование http://www.w3.org/2000/09/xmldsig#enveloped-signature.

    В шаблоне обязаны присутствовать узлы KeyInfo -> X509Data -> X509Certificate. Узел X509Certificate должен быть самозакрывающимся.

    <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
        <dsig:SignedInfo xmlns:n1="http://www.w3.org/2000/09/xmldsig#">
            <dsig:CanonicalizationMethod Algorithm="urn:xml-dsig:transformation:v1.1"/>
            <dsig:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
            <dsig:Reference URI="#KeyInfo">
                <dsig:Transforms>
                    <dsig:Transform Algorithm="urn:xml-dsig:transformation:v1.1"/>
                </dsig:Transforms>
                <dsig:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
                <dsig:DigestValue/>
            </dsig:Reference>
            <dsig:Reference URI="">
                <dsig:Transforms>
                    <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
                        <dsig:XPath>not(ancestor-or-self::dsig:Signature)</dsig:XPath>
                    </dsig:Transform>
                    <dsig:Transform Algorithm="urn:xml-dsig:transformation:v1.1"/>
                </dsig:Transforms>
                <dsig:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
                <dsig:DigestValue/>
            </dsig:Reference>
        </dsig:SignedInfo>
        <dsig:SignatureValue/>
        <dsig:KeyInfo Id="KeyInfo">
            <dsig:X509Data>
                <dsig:X509Certificate/>
            </dsig:X509Data>
        </dsig:KeyInfo>
    </dsig:Signature>
    
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
            <CanonicalizationMethod Algorithm="urn:xml-dsig:transformation:v1.1">
            </CanonicalizationMethod>
            <SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256">
            </SignatureMethod>
            <Reference URI="#KeyInfo">
                <Transforms>
                    <Transform Algorithm="urn:xml-dsig:transformation:v1.1"></Transform>
                </Transforms>
                <DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"></DigestMethod>
                <DigestValue/>
            </Reference>
            <Reference URI="#Object">
                <Transforms>
                    <Transform Algorithm="urn:xml-dsig:transformation:v1.1">
                </Transform>
                </Transforms>
                <DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"></DigestMethod>
                <DigestValue/>
            </Reference>
        </SignedInfo>
        <SignatureValue/>
        <KeyInfo Id="KeyInfo">
            <X509Data>
                <X509Certificate/>
            </X509Data>
        </KeyInfo>
        <Object Id="Object">
        <TransportHeader xmlns="urn:customs.ru:Envelope:TransportHeader:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <ProcessingDateTime>2023-06-24T12:12:12+03:00</ProcessingDateTime>
            <MessageChecked>true</MessageChecked>
            <ContractConcluded>true</ContractConcluded>
            <EnvelopeID>7824DDDC-9804-47E3-8E72-2885427C8104</EnvelopeID>
        </TransportHeader>
        </Object>
    </Signature>
    

    Параметры подписи

    В запросе подписи ФТС документа /signature должны быть указаны следующие параметры:

    • FTSSignature = true
    • XMLDSigType = XMLTemplate

    Пример запроса:

    {
        "BinaryData": [
            {
                "RefId": "{{doc_id}}"
            }
        ],
        "Signature": {
            "CertificateId": "{{sign_cert_id}}",
            "Type": "XMLDSig",
            "Parameters": {
                "XMLDSigType": "XMLTemplate",
                "FTSSignature": "true"
            }
        }
    }
    
    В начало © ООО "КРИПТО-ПРО", 2000–2025