WCF Web服务和使用HTTPS的URL转发 [英] wcf webservice and URL forwarding with https

查看:7
本文介绍了WCF Web服务和使用HTTPS的URL转发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

几天来,我一直在研究并试图解决这个问题,但没有成功。

我在Windows Server 2012上的IIS 8上部署了WCF Web服务。

在开发过程中,为了进行服务调用,我一直使用服务的完整URL。

示例:

http://myserver.com/appservices/service1.svc/getdata 

但现在我需要执行以下操作:

  1. 我在GoPardy上有一个域,假设Somedomain.com,我希望有一个子域services.Somedomain.com来使用,而不是使用完整的URL。因此,我希望有类似services.somedomain.com/getdata的内容,而不是编写上面的完整URL。我无法做到这一点。我尝试将服务的子域的URL转发设置为转发到http://myserver.com/appservices/service1.svc,这在浏览器上有效,但当在移动应用程序上或通过fiddler使用它时,我得到了301错误。(我尝试了带和不带面具两种情况)。有没有办法做到这一点?

  2. 我需要为它获得一个SSL证书。我这里的问题是,我应该在哪个域名上获得它?我是针对Somedomain.com,还是针对子域services.Somedomain.com,或者可能针对原始域myserver.com。我有点迷路了,我不想买错了的证书

为了让您对我希望得到的最终结果有一个总体的了解,我需要具备以下条件:

Somedomain.com指向部署在iIS上的网站

services.Somedomain.com指向部署在同一iis上的WCF Web服务,它将用于将从Android/iPhone调用的服务。并且这需要有一个SSL证书

我已从GoPardy购买了Somedomain.com

非常感谢你的提示/帮助我真的很感激

推荐答案

现在我通过以上问题对情况有了更好的了解。

首先,由于您拥有两个域,并且您是Windows 2012服务器的管理员,我建议您将somedomain.com直接添加到您的服务器,即不要重定向。这样更好,因为您只需要购买所需的SSL证书。如果您使用重定向,您将需要两个域的SSL证书,否则您的用户将收到安全警告,因为原始请求与证书不匹配。

此外,您需要的是URL重写,而不是重定向。有什么关系呢?重定向客户端请求让Web浏览器转到另一个网站(使用301 error code)。重写是在URL到达您的服务之前对其进行的服务器端重写

您可以开始URL重写,将以下内容添加到您的Web.config文件:

<system.webServer>
  <rewrite>
    <rules>
      <!-- My rules -->
    </rules>
  </rewrite>
</system.webServer>

我们将添加一些规则(假设您在同一台服务器上有services.somedomain.com)。

  1. 第一条规则,将http://services.somedomain.com/appservices/service1.svc/getdata重写为http://services.somedomain.com/getdata

    <rule name="SubDomainAppService" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
            <add input="{HTTP_HOST}" pattern="^services.somedomain.com$" />
        </conditions>
        <action type="Rewrite" url="{HTTPS}services.somedomain.com/appservices/service1.svc/{R:1}" />
    </rule>  
    

    这将匹配正则表达式模式services.somedomain.com/getdata,捕获URL的剩余部分并在内部将其重写为services.somedomain.com/appservices/service1.svc/getdata。此规则还将请求强制/重写为HTTPS

  2. 要强制您的网站使用SSL,可以通过添加重写规则来实现。这会将HTTPHTTPS的任何传入请求重写。

    <rule name="Redirect to HTTPS" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
    </rule>
    

URL重写是一个复杂的主题,甚至我都不完全理解。以下是我在回答这个问题时阅读的一些资源:


奖金:

对于您的DNS、域和SSL证书,我建议使用更好的提供商,如DNSimple。阅读特洛伊·亨特的*post why he moved。子域和通配符的来自DNSimple的SSL证书是on their site

如果你不知道特洛伊·亨特是谁,请阅读他关于安全的其余文章。尤其是他关于先黑你的API的帖子。

这篇关于WCF Web服务和使用HTTPS的URL转发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆