Difference between revisions of "Tatsu Signing Server"

From The iPhone Wiki
Jump to: navigation, search
(TSS research)
(More research. Still can't access the WSDL, though :()
Line 1: Line 1:
The '''Tatsu Signing Server''' ('''TSS''') is a collection of services provided by Apple. In late 2012, the list of available services was briefly made public at [https://web.archive.org/web/20121128012112/http://gs.apple.com/TSS/ gs.apple.com]. This index page has since been removed, although at least one archived capture of this page exists.
+
The '''Tatsu Signing Server''' ('''TSS''') is a collection of services provided by Apple. In late 2012, the list of available services was briefly made public at [https://web.archive.org/web/20121128012112/http://gs.apple.com/TSS/ gs.apple.com]. This index page has since been removed, although at least one archived capture exists.
TSS is accessed chiefly for use of the [[SHSH Protocol]] to receive signed blobs for a given iOS build. This is accessed with the SHSH controller at http://gs.apple.com/TSS/controller.
+
TSS is accessed chiefly for use of the [[SHSH Protocol]] to receive signed blobs for a given iOS build. This is achieved with the SHSH controller at http://gs.apple.com/TSS/controller.
   
There is an Apple internal equivalent, known as Spidercab, running at [http://tatsu-tss-internal.apple.com:80 tatsu-tss-internal.apple.com] and [http://tss-int.apple.com:80 tss-int.apple.com], which are only accessible within Apple's VPN. SpiderCab is used to sign internal/debug and test builds of iOS, including old versions that are no longer signed on production.
+
There is an Apple internal equivalent, known as SpiderCab, running at [http://tatsu-tss-internal.apple.com:80 tatsu-tss-internal.apple.com] and [http://tss-int.apple.com:80 tss-int.apple.com], which are only accessible within Apple's VPN. SpiderCab is used to sign internal/debug and test builds of iOS, including old versions that are no longer signed on production.
   
Reliable communication to the TSS server requires the appropriate HTTP header, as described in [[SHSH Protocol#Communication]]. If you are communicating with a TSS service and not the SHSH controller itself, you must additionally provide a <code>SOAPAction:</code> header.
+
Reliable communication to the TSS server requires the appropriate HTTP header, as described in [[SHSH Protocol#Communication]]. If you are communicating with a TSS service and not the SHSH controller itself, you must additionally provide a <code>SOAPAction:</code> header containing the URL of the service you are accessing.
   
 
== Services ==
 
== Services ==
   
There are two services provided, both accessible via [https://en.wikipedia.org/wiki/SOAP SOAP] requests. They are located in http://gs.apple.com/TSS/services/ under their respective names.
+
There are two services provided, both accessible via [https://en.wikipedia.org/wiki/SOAP SOAP] requests. They are located in http://gs.apple.com/TSS/services/ under their respective names. A sample request concerning "getReceiptPacketStatus" from the "tatsuReceiptsStatusPort" service is demonstrated below:
  +
  +
> POST /TSS/services/tatsuReceiptsStatusPort HTTP/1.1
  +
> Host: gs.apple.com
  +
> User-Agent: InetURL/1.0
  +
> Accept: */*
  +
> Content-Length: 458
  +
> Content-Type: text/xml;charset=utf-8
  +
> SOAPAction: http://gs.apple.com/TSS/services/tatsuReceiptsStatusPort
  +
  +
SOAP XML:
  +
<?xml version="1.0" encoding="UTF-8"?>
  +
<soapenv:Envelope
  +
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  +
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  +
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  +
  +
<soapenv:Body>
  +
<ns1:getReceiptPacketStatus
  +
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  +
xmlns:ns1="http://gs.apple.com/TSS/services/tatsuReceiptsStatusPort">
  +
</ns1:getReceiptPacketStatus>
  +
</soapenv:Body>
  +
  +
</soapenv:Envelope>
  +
  +
Response:
  +
<?xml version="1.0" encoding="utf-8"?>
  +
<soapenv:Envelope
  +
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  +
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  +
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  +
  +
<soapenv:Body>
  +
<ns1:getReceiptPacketStatusResponse
  +
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  +
xmlns:ns1="http://gs.apple.com/TSS/services/tatsuReceiptsStatusPort">
  +
<param1
  +
xsi:type="ns2:ReceiptDataPacketStatusResponse"
  +
xsi:nil="true"
  +
xmlns:ns2="http://receiptsstatus.web.tss.apple.com"/>
  +
</ns1:getReceiptPacketStatusResponse>
  +
</soapenv:Body>
  +
  +
</soapenv:Envelope>
  +
  +
This type of SOAP request/response can be performed with a cURL request, like so (where <code>soap.xml</code> is the location of the aforementioned SOAP XML):
  +
  +
curl -i -m 1.0 -H "Content-Type: text/xml;charset=utf-8" -A InetURL/1.0 -H "SOAPAction: http://gs.apple.com/TSS/services/tatsuReceiptsStatusPort" -H "Host: gs.apple.com" -d @soap.xml http://gs.apple.com/TSS/services/tatsuReceiptsStatusPort
   
 
===PacketPort===
 
===PacketPort===
   
  +
====Operations====
 
* pushDataPacket
 
* pushDataPacket
  +
** Return type: <code>pushDataPacketResponse</code>
   
 
===tatsuReceiptsStatusPort===
 
===tatsuReceiptsStatusPort===
   
  +
====Operations====
 
* getReceiptPacketStatus
 
* getReceiptPacketStatus
  +
** Parameters: <code>ReceiptDataPacketStatusResponse</code>
  +
** Return type: <code>getReceiptPacketStatusResponse</code>
 
* queryTASExpireTSA
 
* queryTASExpireTSA
  +
** Parameters: <code>ExpireTSAQueryResponse</code>
  +
** Return type: <code>queryTASExpireTSAResponse</code>
 
* updateTSSStatus
 
* updateTSSStatus
  +
** Parameters: <code>status</code>
  +
** Return type: <code>updateTSSStatusResponse</code>
   
 
== Notes ==
 
== Notes ==
Line 25: Line 82:
   
 
===Server Details===
 
===Server Details===
It is of moderate security concern to know that the TSS server runs [http://tomcat.apache.org/ Apache Tomcat], exposed, alongside version number, in the default 404 page. The SOAP implementation used is [http://axis.apache.org/axis/ Apache Axis] (Java).
+
It is of moderate security concern to know that the TSS server runs [http://tomcat.apache.org/ Apache Tomcat], which is exposed, alongside version number, in the default 404 page. The SOAP implementation used is [http://axis.apache.org/axis/ Apache Axis] (Java).
   
 
== References ==
 
== References ==

Revision as of 23:04, 16 February 2020

The Tatsu Signing Server (TSS) is a collection of services provided by Apple. In late 2012, the list of available services was briefly made public at gs.apple.com. This index page has since been removed, although at least one archived capture exists. TSS is accessed chiefly for use of the SHSH Protocol to receive signed blobs for a given iOS build. This is achieved with the SHSH controller at http://gs.apple.com/TSS/controller.

There is an Apple internal equivalent, known as SpiderCab, running at tatsu-tss-internal.apple.com and tss-int.apple.com, which are only accessible within Apple's VPN. SpiderCab is used to sign internal/debug and test builds of iOS, including old versions that are no longer signed on production.

Reliable communication to the TSS server requires the appropriate HTTP header, as described in SHSH Protocol#Communication. If you are communicating with a TSS service and not the SHSH controller itself, you must additionally provide a SOAPAction: header containing the URL of the service you are accessing.

Services

There are two services provided, both accessible via SOAP requests. They are located in http://gs.apple.com/TSS/services/ under their respective names. A sample request concerning "getReceiptPacketStatus" from the "tatsuReceiptsStatusPort" service is demonstrated below:

> POST /TSS/services/tatsuReceiptsStatusPort HTTP/1.1
> Host: gs.apple.com
> User-Agent: InetURL/1.0
> Accept: */*
> Content-Length: 458
> Content-Type: text/xml;charset=utf-8
> SOAPAction: http://gs.apple.com/TSS/services/tatsuReceiptsStatusPort

SOAP XML:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body>
	<ns1:getReceiptPacketStatus
		soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
		xmlns:ns1="http://gs.apple.com/TSS/services/tatsuReceiptsStatusPort">
	</ns1:getReceiptPacketStatus>
</soapenv:Body>

</soapenv:Envelope>

Response:

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope
	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body>
	<ns1:getReceiptPacketStatusResponse
		soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
		xmlns:ns1="http://gs.apple.com/TSS/services/tatsuReceiptsStatusPort">
		<param1
			xsi:type="ns2:ReceiptDataPacketStatusResponse"
			xsi:nil="true"
			xmlns:ns2="http://receiptsstatus.web.tss.apple.com"/>
	</ns1:getReceiptPacketStatusResponse>
</soapenv:Body>

</soapenv:Envelope>

This type of SOAP request/response can be performed with a cURL request, like so (where soap.xml is the location of the aforementioned SOAP XML):

curl -i -m 1.0 -H "Content-Type: text/xml;charset=utf-8" -A InetURL/1.0 -H "SOAPAction: http://gs.apple.com/TSS/services/tatsuReceiptsStatusPort" -H "Host: gs.apple.com" -d @soap.xml http://gs.apple.com/TSS/services/tatsuReceiptsStatusPort

PacketPort

Operations

  • pushDataPacket
    • Return type: pushDataPacketResponse

tatsuReceiptsStatusPort

Operations

  • getReceiptPacketStatus
    • Parameters: ReceiptDataPacketStatusResponse
    • Return type: getReceiptPacketStatusResponse
  • queryTASExpireTSA
    • Parameters: ExpireTSAQueryResponse
    • Return type: queryTASExpireTSAResponse
  • updateTSSStatus
    • Parameters: status
    • Return type: updateTSSStatusResponse

Notes

SoapUI, an automation framework for the SOAP protocol, lists Apple among their largest users [1].

Server Details

It is of moderate security concern to know that the TSS server runs Apache Tomcat, which is exposed, alongside version number, in the default 404 page. The SOAP implementation used is Apache Axis (Java).

References

External Links