深入SSL问题 当通过安全套接层连接到Web Service 时,你会遇到很多问题。要诊断这些错误有时候是很困难的,特别是如果你只是从SOAP工具中收到一些普通的TCP连接错误。通常发生的有四个问题,其中的三个可以通过在IE浏览器中连接WSDL文件中指定的地址来发现。
SSL服务器证书没有安装。想要在你服务器上支持SSL,你首先要安装服务器证书。如果你没有安装,你不能连接到服务器上HTTP默认的SSL连接端口443。SOAP Toolkit 2.0会返回一个0x800A1518 (-2146822888)错误,表示连接错误。这也是其他三个SSL相关错误的错误代码。如果你在IE中试图浏览HTTPS开头的URL,你会得到一个标准的DNS出错页面。去掉"S"后再试一遍。如果你得到不同的出错信息,你就知道是服务器证书还没有安装。
URL中的主机名同服务器证书中的名字不匹配。当你为Web Service 器创建服务器证书时,你必须确定其中的名字同用户访问时URL中的主机名一致。如果不一致,当你用IE访问时,你会看到一个Security Alert对话框,如图六所示。当证书已经正确安装,但使用localhost指定本地计算机时,也常常看到这个问题。要避免这个问题,请将WSDL文件中location元素指定为你的服务器证书中所使用的名字。
 图六 IE Security Alert对话框,它表示证书同站点名称不一致 |
证书颁发机构不是受信任的机构。很多人都使用Microsoft Certificate Server来创建证书,安装到自己的机器上进行测试。这样可以比购买真正的得到全球广泛认证的服务器证书节约时间和费用。但是,当你成为自己的证书的认证机构时,网络中其他的机器并不信任你发布的证书。这些机器必须首先为你的认证机构安装根证书, 然后才能通过安全套接层连到你的服务器。同样的, 你可以通过在IE中用HTTPS URL指定Web Service,来确认是否有这个问题。如果证书颁发机构不是受信任的机构,你会看到和图6相似的对话框,除了左上角的图标会变成警告图示。你的认证机构的证书必须安装在想用SSL连接到你的服务器的所有计算机上。
该证书机构不在受信任的本机证书列表中。如果你在IE中连接到该Web Service ,没有看到Security Alert 对话框(即使重启IE也没有),但是你仍然无法通过ASP页面访问Web Service,这可能是一个更微妙的问题。当你安装证书认证机构的证书时,你可能将它加入到个人的证书认证列表中。而ASP页面是在IIS进程中的,不能访问你用户账号中的证书列表。为了使ASP页面能够通过SSL进行访问,请确定证书认证机构的证书是作为受信任的根证书安装在本机的证书列表之中。你可以打开mmc.exe,添加Certificates MMC插件并将证书认证机构的证书导入本机列表之中,成为受信任的根证书。这样问题就解决了。
关于Favorites Services中安装SSL功能的具体步骤,请查阅Installing the Favorites Service