签署XML文件(PHP)

时间:2015-12-28 16:33:08

标签: php xml soap xml-signature

我在尝试签署XML文件以发出soap请求时遇到问题。 这是我用来在变量中获取签名的函数:

private function signXml() {

    $doc = new DOMDocument();
    $doc->loadXML($this->xml);

    foreach($doc->getElementsByTagNameNS('*', 'SignedInfo') as $elm) {
        $SignedInfo =  $elm->c14n(); 

        $key = openssl_pkey_get_private ( file_get_contents($this->lc_key) , $this->lc_Password); //file_get_contents($this->key);

        if ( openssl_sign($SignedInfo, $crypt, $key, OPENSSL_ALGO_SHA1) ) {
            $this->data['SignatureValue'] = base64_encode($crypt);
        } else {
            throw new Exception('XML signature failed !');
        }
    }
}

当我使用SoapUI生成签名时,服务器会成功处理该请求。但是当我使用我的php脚本时,我会得到一个不同的签名,虽然digestValues是相同的,服务器会出现内部错误。

这是我应该使用的标准:

密钥标识类型=>二进制安全令牌

签名算法=> http://www.w3.org/2000/09/xmldsig#rsa-sha1

签名规范化=> http://www.w3.org/2001/10/xml-exc-c14n#

摘要算法=> SHA1

签名消息部分=>体

0 个答案:

没有答案