无法使用Php WS02生成X509Data和X509Certificate标记

时间:2015-02-08 17:00:53

标签: php x509certificate

在下面生成时出现问题,在WS02 policy.xml中尝试使用各种输入时。请在下面的webservice请求中生成以下内容。

<ds:KeyInfo> 
                <ds:X509Data>
                   <ds:X509Certificate>MIIDUjCCAjqgAwIBAgIIBX96VBJzA1QwDQYJKoZIhvcNAQEFBQAwWjERMA8GA1UEAxMIUEdXU3Vi
    Q0ExEDAOBgNVBAoTB1NpZW1lbnMxEzARBgNVBAcTCkJyYXRpc2xhdmExETAPBgNVBAgTCFNsb3Zh
    a2lhMQswCQYDVQQGEwJTSzAeFw0wNjAxMDQxNTExMzBaFw0wODAxMDQxNTIxMzBaMFsxEjAQBgNV
    BAMTCUNhcm1lblNpbTEQMA4GA1UEChMHU2llbWVuczETMBEGA1UEBxMKQnJhdGlzbGF2YTERMA8G
    A1UECBMIU2xvdmFraWExCzAJBgNVBAYTAlNLMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCc
    rUHuWD+sfU+PS+vYe/wwAOWlpTqpcRhKwXTlhtfekQSEz/jzqWhfRuPzNil16QFOdPZg5M0OusI3
    ln239La5ZpkTSvCc5LrNbj4SvJu2cbc1UYU1BAQCipxs6kG1biYd3nWqpGum8nESybLSPHActZ/1
    DKVauBXEWFSKdazUkQIDAQABo4GeMIGbMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgWgMDsG
    A1UdJQQ0MDIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMFBggrBgEFBQcD
    BzAdBgNVHQ4EFgQURQJ7qpFi7doKbZvRkDIf4My3LrIwHwYDVR0jBBgwFoAUtbaYUw+qe+iV0ruq
    WFVWZDJdB4kwDQYJKoZIhvcNAQEFBQADggEBAI3xvGKw8nsZdyVh29ON+mlfsv2LERT+zqeNSsuE
    Pno58V+HFn28QaPJX7CwNsfRS0txA7gbmAM5BgUPXVWzqjgXp0HeWj1qzM5yuawLzBP9d7thWkrK
    ZOr7vWPMKFkhiw37WFaSot6HGVCU+KrMxL2hteIhLNGKLKQiKVIoUpAKgzuGe9PBwaxD1JxsBSKs
    x8zigoPAlMhRdktg1lYI7/jKgEXPK9TfNmP1bQGErP88j4aw3fC2DQiOaewjQlCV7BaZ5ZdYLlj8
    IV1BmGukpJZvTUj6/T6ui5CrAngiGEL17NNWkvunn4Vrie038D5U3NK31b/uKdMHiwmb1iu/Ykc=</ds:X509Certificate>
                </ds:X509Data>
                <ds:KeyValue>
                   <ds:RSAKeyValue>
                      <ds:Modulus>nK1B7lg/rH1Pj0vr2Hv8MADlpaU6qXEYSsF05YbX3pEEhM/486loX0bj8zYpdekBTnT2YOTNDrrC
    N5Z9t/S2uWaZE0rwnOS6zW4+ErybtnG3NVGFNQQEAoqcbOpBtW4mHd51qqRrpvJxEsmy0jxwHLWf
    9QylWrgVxFhUinWs1JE=</ds:Modulus>
                      <ds:Exponent>AQAB</ds:Exponent>
                   </ds:RSAKeyValue>
                </ds:KeyValue>
             </ds:KeyInfo>

这个$ xml,无法嵌入soap标头。 $ client = new WSClient(array(“wsdl”=&gt;“/ home / sps_mtnc_dev / Preetham / CBSInterface_BusinessMgr.wsd l”,“policy”=&gt; $ policy,“securityToken”=&gt; $ xml))。 Reult我们无法看到X509证书

2 个答案:

答案 0 :(得分:1)

这是怎么回事?:

<?php

include('File/X509.php');

$cert = '-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQT52W2WawmStUwpV8tBV9TTANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0xMTEwMjYwMDAwMDBaFw0x
MzA5MzAyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw
FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEA3rcmQ6aZhc04pxUJuc8PycNVjIjujI0oJyRLKl6g2Bb6YRhLz21ggNM1QDJy
wI8S2OVOj7my9tkVXlqGMaO6hqpryNlxjMzNJxMenUJdOPanrO/6YvMYgdQkRn8B
d3zGKokUmbuYOR2oGfs5AER9G5RqeC1prcB6LPrQ2iASmNMCAwEAAaOB5zCB5DAM
BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF
BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw
Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0
ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF
AAOBgQAhrNWuyjSJWsKrUtKyNGadeqvu5nzVfsJcKLt0AMkQH0IT/GmKHiSgAgDp
ulvKGQSy068Bsn5fFNum21K5mvMSf3yinDtvmX3qUA12IxL/92ZzKbeVCq3Yi7Le
IOkKcGQRCMha8X2e7GmlpdWC1ycenlbN0nbVeSv3JUMcafC4+Q==
-----END CERTIFICATE-----';

$x509 = new File_X509();
$x509->loadX509($cert);
$pubKey = $x509->getPublicKey();

$xml = '<KeyInfo><X509Data><X509Certificate>';
$xml.= preg_replace('#-.*-#', '', $cert);
$xml.= '</X509Certificate></X509Data><KeyValue>';
$xml.= $pubKey->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_XML);
$xml.= '</KeyValue></KeyInfo>';

echo preg_replace('#(</?)#', '$1ds:', $xml);

它使用phpseclib并要求您提供X.509证书。

答案 1 :(得分:-1)

Here is the script and policy.xml. Not able to generate formed request in soap request.Kindly assit

<?php

try {

    $my_cert = ws_get_cert_from_file("/home/sps_mtnc_dev/Preetham/keys/bob_cert.cert");

    $my_key = ws_get_key_from_file("/home/sps_mtnc_dev/Preetham/keys/bob_key.pem");

    $rec_cert = ws_get_cert_from_file("/home/sps_mtnc_dev/Preetham/keys/alice_cert.cert");


    /*Load policy file*/
    $policy_xml = file_get_contents("/home/sps_mtnc_dev/Preetham/keys/policy.xml");
    //$policy = new WSPolicy(array("security"=>array("useUsernameToken" => TRUE, "includeTimeStamp" => TRUE)));
    $policy = new WSPolicy($policy_xml);

include('/home/sps_mtnc_dev/wso2/wsf-master/php/scripts/phpseclib0.3.10/File/X509.php');

$cert = '-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQT52W2WawmStUwpV8tBV9TTANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0xMTEwMjYwMDAwMDBaFw0x
MzA5MzAyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw
FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEA3rcmQ6aZhc04pxUJuc8PycNVjIjujI0oJyRLKl6g2Bb6YRhLz21ggNM1QDJy
wI8S2OVOj7my9tkVXlqGMaO6hqpryNlxjMzNJxMenUJdOPanrO/6YvMYgdQkRn8B
d3zGKokUmbuYOR2oGfs5AER9G5RqeC1prcB6LPrQ2iASmNMCAwEAAaOB5zCB5DAM
BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF
BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw
Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0
ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF
AAOBgQAhrNWuyjSJWsKrUtKyNGadeqvu5nzVfsJcKLt0AMkQH0IT/GmKHiSgAgDp
ulvKGQSy068Bsn5fFNum21K5mvMSf3yinDtvmX3qUA12IxL/92ZzKbeVCq3Yi7Le
IOkKcGQRCMha8X2e7GmlpdWC1ycenlbN0nbVeSv3JUMcafC4+Q==
-----END CERTIFICATE-----';

$x509 = new File_X509();
$x509->loadX509($cert);
$pubKey = $x509->getPublicKey();

$xml = '<KeyInfo><X509Data><X509Certificate>';
$xml.= preg_replace('#-.*-#', '', $cert);
$xml.= '</X509Certificate></X509Data><KeyValue>';
$xml.= $pubKey->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_XML);
$xml.= '</KeyValue></KeyInfo>';

echo preg_replace('#(</?)#', '$1ds:', $xml);
    $sec_token = new WSSecurityToken(array("privateKey" => $my_key, "certificate" => $my_cert));

    $client = new WSClient(array("wsdl"=>"/home/sps_mtnc_dev/Preetham/CBSInterface_BusinessMgr.wsdl", "policy" => $policy, "securityToken" => $sec_token));
    //$client = new WSClient(array("wsdl"=>"/home/sps_mtnc_dev/Preetham/prov-gw-hlr_subscriber-4.5.3.wsdl"));
    printf("WSDL loaded \n");
    //$client = new WSClient(array("useSOAP" => TRUE,"policy" => $policy,"securityToken" => $sec_token));

    printf("Response = %s \n", $client);
    $proxy = $client->getProxy();
    //printf("Proxy = %s \n",$proxy);

    printf("getProxy done \n");


    $SessionEntity = array("Name" => 10001, "Password" => "qBnsbLtbFeBA1rBaPtuwXg==", "RemoteAddress" => 172123);
    $RequestHeader = array("CommandId" => "NewSubscriber", "Version" => 1, "TransactionId" => 1234, "SequenceId" => 1, "RequestType" => "Event", "SessionEntity" => $SessionEntity, "SerialNo" => 1234);
    $Subscriber = array("Lang" => 1234, "PaidMode" => 1234, "MainProductID" => 1234, "IMSI" => 1234);
    $NewSubscriberRequest = array("SubscriberNo" => 1234, "Subscriber" => $Subscriber);


    printf("Input message ready \n");

    $resMessage = $proxy->NewSubscriber(array("NewSubscriberRequest" => $xml));
    printf("Input message ready = %s \n", $resMessage);
    printf("Response = %s \n", $resMessage->str);

} catch (Exception $e) {

    if ($e instanceof WSFault) {
        printf("Soap Fault: %s\n", $e->Reason);
    } else {
        printf("Message = %s\n",$e->getMessage());
    }
}
?>



policy.xml :

<wsp:Policy wsu:Id="SgnOnlyAnonymous" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsse11="http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-wssecurity-secext-1.1.xsd">
   <wsp:ExactlyOne>
      <wsp:All>
         <sp:AsymmetricBinding>
            <wsp:Policy>
               <sp:InitiatorToken>
                  <wsp:Policy>
                     <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always">
                        <wsp:Policy>
                          <sp:RequireKeyIdentifierReference/>
                            <sp:RequireIssuerSerialReference/>
                            <sp:RequireEmbeddedTokenReference/>
                           <sp:WssX509V1Token10/>
                           <sp:WssX509V3Token10/>
                        </wsp:Policy>
                     </sp:X509Token>
                  </wsp:Policy>
               </sp:InitiatorToken>
               <sp:RecipientToken>
                  <wsp:Policy>
                     <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always">
                        <wsp:Policy>
                        <sp:RequireKeyIdentifierReference/>
                            <sp:RequireIssuerSerialReference/>
                            <sp:RequireEmbeddedTokenReference/>
                        <sp:WssX509V1Token10/>
                           <sp:WssX509V3Token10/>
                        </wsp:Policy>
                     </sp:X509Token>
                  </wsp:Policy>
               </sp:RecipientToken>
                <sp:AlgorithmSuite>
                  <wsp:Policy>
                     <sp:Basic128Rsa15/>
                  </wsp:Policy>
               </sp:AlgorithmSuite>
               <sp:Layout>
                  <wsp:Policy>
                     <sp:Lax/>
                  </wsp:Policy>
               </sp:Layout>

               <sp:OnlySignEntireHeadersAndBody/>
            </wsp:Policy>
         </sp:AsymmetricBinding>

          <sp:SupportingTokens>
           <sp:Body/>
         </sp:SupportingTokens>
      <sp:SignedParts>
            <sp:Body/>
         </sp:SignedParts>


      </wsp:All>
   </wsp:ExactlyOne>
</wsp:Policy>