Подпись XML с использованием xmlsec1

Я попытался использовать следующую команду, чтобы подписать мой тестовый XML закрытым ключом P12, и получил следующие ошибки:

xmlsec1 --sign --output tested.payload.xml --pkcs12 SenderCert/sender.p12 --pwd password tested.xml 

Error: failed to find default node with name="Signature"
Error: failed to load template "tested.xml"
Error: failed to sign file "tested.xml"

Любое предложение?

2 ответа

Там должно быть Security тег внутри вашего Header отметьте примерно такую ​​структуру в вашем сообщении SOAP:

<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-A64424329E443DAEFE14265088735561">CERTIFICATE_HERE</wsse:BinarySecurityToken>
    <ds:Signature Id="SIG-A64424329E443DAEFE14265088736534" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:SignedInfo>
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
                <ec:InclusiveNamespaces PrefixList="raad soapenv" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/>
            </ds:CanonicalizationMethod>
            <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
            <ds:Reference URI="#id-15652DE155DD8DFF971422029213153243">
                <ds:Transforms>
                    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
                        <ec:InclusiveNamespaces PrefixList="raad" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                    </ds:Transform>
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <ds:DigestValue/>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue/>
        <ds:KeyInfo Id="KI-A64424329E443DAEFE14265088736252">
            <wsse:SecurityTokenReference wsu:Id="STR-A64424329E443DAEFE14265088736273">
                <wsse:Reference URI="#X509-A64424329E443DAEFE14265088735561" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
            </wsse:SecurityTokenReference>
        </ds:KeyInfo>
    </ds:Signature>
</wsse:Security>
</soapenv:Header>

xmlsec1 не вставляет новые теги, а заполняет необходимые теги значениями

Я только что встретил ту же проблему. Я решаю это, добавив <samlsig:Signature> ярлык, который является стандартным SAML в ОАЗИСЕ, тогда все будет хорошо.

Но проблема в том, что мне нужно упростить <samlp:AuthnRequest> настроить IDP, который не на 100% совпадает со стандартом SAML. Я не знаю, как решить такую ​​ситуацию. Кто-нибудь знает это?

Другие вопросы по тегам