SoapFault例外:发送器和接收器时钟之间缺乏同步

时间:2012-09-27 14:10:29

标签: php api soap linux-kernel

我正在使用DocuSign API并遇到了一些问题。 将数据请求发送到他们的服务器时,我收到以下错误:

SoapFault exception: [q0:InvalidSecurity] An error was discovered 
processing the <Security> header ---> WSE065: Creation time of the 
timestamp is in the future. This typically indicates lack of synchronization 
between sender and receiver clocks. Make sure the clocks are synchronized 
or use the timeToleranceInSeconds element in the microsoft.web.services3 
configuration section to adjust tolerance for lack of clock synchronization.

我已经浏览了他们的社区论坛,我可以从他们的论坛管理员那里找到唯一的回复:

The message means that the client clock is wrong. The timezone might be set 
incorrectly. If the SOAP request is timestamped too far in the future or in the 
past, the server will reject it.  We generally run into this error with mobile 
apps since folks don't always have their devices set to sync to network time.

我检查了我的服务器时间以及我的电脑时间,以确保一切正常。我的计算机时间设置为EST,服务器设置为CST。我已尝试在计算机上更新并同步我的系统时钟,并尝试将时区调整为CST以确保它们都匹配。我还将计算机时间改为GMT,因为这就是他们所说的服务器时间。我也尝试更新我的服务器时钟,因为它似乎是一点点关闭。 (我的时钟和服务器时钟之间似乎有6分钟的差异。)

我在服务器上运行了此命令:

sudo ntpdate ntp.ubuntu.com

响应:

27 Sep 08:51:41 ntpdate[18858]: step time server 91.189.94.4 offset -357.639332 sec

我也尝试在服务器上编辑我的grub配置文件(/boot/grub/grub.conf)。 我尝试将这些参数的不同组合添加到内核行的末尾:

clock=pit 
acpi=off 
noapic

尝试使用此命令更新硬件时钟:

hwclock=systohc

soap标题如下:

此请求于上午10:41(我的电脑时间[EST]),上午9:47(我的服务器时间[CST])发出。

请求:

POST /api/3.0/api.asmx HTTP/1.1
Host: www.docusign.net
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.3.16
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://www.docusign.net/API/3.0/CreateEnvelope"
Content-Length: 116157

响应:

HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Length: 1696
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Thu, 27 Sep 2012 14:41:13 GMT
Vary: Accept-Encoding
Strict-Transport-Security: max-age=7776000; includeSubDomains

如果有人对可能导致此错误的原因有任何疑问,或者如果有人对如何同步我的时钟有任何进一步的建议,我很乐意听到它们。

提前感谢您的时间和考虑。

1 个答案:

答案 0 :(得分:1)

我最终联系了我正在托管我的虚拟服务器的公司,因为事实证明这根本不是我可以控制的任何问题。事实证明,他们的虚拟机管理程序(虚拟机监视器 - VMM)出现问题,所以当我的服务器同步它的时间时,我的时间偏移了大约7分钟。由于我的服务器的系统时钟由它控制,这也使我无法使用此命令手动设置时间:

date -s "27 SEP 2012 HH:MM:SS"

因为更改只会被VMM取代。