2012-03-01 18 views
3

我一直在滔滔不绝地试图弄清楚为什么SSL能够在我的Azure项目之一中工作,而不是在另一个Azure项目中工作。无法让SSL在Azure实例上工作

当我导航到我的网站时,说https://foo.com,我甚至无法连接到该网站。浏览器根本无法连接,卷曲表示为"couldn't connect to host"。但是,如果我转到我的cloudapp.net网址(例如https://foo.cloudapp.net),它可以连接,但浏览器会发出抱怨,并说我的证书是*.foo.com。注:I am能够连接到http://foo.com没有任何问题。

这里是我的代码与某些值混淆。

ServiceDefinition.csdef中:

<?xml version="1.0" encoding="utf-8"?> 
<ServiceDefinition name="MyApp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> 
<WebRole name="www" vmsize="Small"> 
<Sites> 
    <Site name="Web"> 
    <VirtualApplication name="r" physicalDirectory="../Foo/Bar" /> 
    <Bindings> 
     <Binding name="Endpoint1" endpointName="Endpoint1" /> 
     <Binding name="Endpoint2" endpointName="Endpoint2" /> 
    </Bindings> 
    </Site> 
</Sites> 
<Endpoints> 
    <InputEndpoint name="Endpoint1" protocol="http" port="80" /> 
    <InputEndpoint name="Endpoint2" protocol="https" port="443" certificate="STAR.foo.com" /> 
</Endpoints> 
<Imports> 
    <Import moduleName="Diagnostics" /> 
</Imports> 
    <Certificates> 
     <Certificate name="STAR.foo.com" storeLocation="LocalMachine" storeName="My" /> 
    </Certificates> 
</WebRole> 
</ServiceDefinition> 

我的证书上传,指纹匹配(在这个例子中它也是 “1234567890”)

ServiceConfiguration.csfg:

<?xml version="1.0" encoding="utf-8"?> 
<ServiceConfiguration serviceName="myApp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*"> 
<Role name="www"> 
<Instances count="2" /> 
<ConfigurationSettings> 
    <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" /> 
</ConfigurationSettings> 
<Certificates> 
    <Certificate name="STAR.foo.com" thumbprint="1234567890" thumbprintAlgorithm="sha1" /> 
</Certificates> 
</Role> 
</ServiceConfiguration> 

Azure控制台:

我已经验证:

我的证书上传

  • 这是SHA1
  • 它的指纹匹配我在ServiceConfiguration.cscfg所指定(在这个例子中它是“1234567890”)
  • 证书颁发机构的证书也存在(对我来说它是“PositiveSSL CA”和“AddTrust External CA root”)
  • 对于Azure实例,它确认有2个端点(端口80和端口443)

为什么我根本无法通过https://foo.com连接,但我的https://foo.cloudapp.net会加载(尽管触发浏览器警告)?这似乎表明我的配置是正确的,但其他的东西是关闭的...想法?

+0

您可以连接到没有SSL的服务器吗?像http://foo.com一样?确保映射是正确的。 – Tom 2012-03-01 15:55:50

+0

如果foo.com不起作用,请尝试www.foo.com – knightpfhor 2012-03-01 20:49:47

+0

是的,我可以正确连接到http://foo.com,而不是通过SSL。我已更新了我的原始帖子以表明这一点。 – TMC 2012-03-02 01:09:48

回答

1

我想你可能是在错误的地方看你的问题!

您是如何将foo.com映射到您网站的地址的?

请注意,Azure实例会获得动态IP地址 - 您的网站现在可能的地址可能不是明天的地址。针对Azure的建议是在域名记录中添加一个“www”CNAME DNS条目,指向“foo.cloudapp.net”。

这样,当有人浏览www.foo.com时,DNS服务器会(不可见地)说“嘿,实际上,该网站是foo.cloudapp.net。然后浏览器会询问IP地址foo.cloudapp.net。这个域名是由微软管理的,他们会返回你的网站的当前IP地址。

如果你想foo.com仍然让你去www.foo.com,你必须设置DNS重定向,以便每当有人输入foo.com到他们的浏览器时,他们将被重定向到www.foo.com。然后,这会使浏览器解析foo.cloudapp.net,然后HTTP请求将被发送到您的站点。一些域名托管服务商收取此费用(通常为象征性费用),一些域名托管服务提供免费服务。

HTH。

+0

http://foo.com工作正常,它的https://foo.com是坏的。 – TMC 2012-03-02 01:10:21