我一直在撕扯我的声音,想知道为什么SSL在我的一个Azure项目中工作但在另一个项目中没有。
当我导航到我的网站时,说https://foo.com
,我甚至无法连接到该网站。浏览器根本无法连接,curl说"couldn't connect to host"
。但是,如果我转到我的cloudapp.net网址(例如https://foo.cloudapp.net
),它可以连接,但浏览器会抱怨并说我的证书是*.foo.com
。注意:我 能够毫无困难地连接到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控制台:
我已经确认:
我的证书已上传
为什么我无法通过https://foo.com
完全连接,但我的https://foo.cloudapp.net
会加载(虽然会触发浏览器警告)?这似乎表明我的配置是正确的,但其他东西是关闭...想法?
答案 0 :(得分:1)
我想你可能会在错误的地方寻找你的问题!
您是如何将foo.com映射到您网站的地址的?
请注意,Azure实例会获得动态IP地址 - 您的网站现在可能在哪些地址可能不是明天的地址。 Azure的建议是在域记录中添加“www”CNAME DNS条目,该条目指向“foo.cloudapp.net”。
这样,当有人浏览www.foo.com时,DNS服务器将(无形地)说“嘿,实际上,该网站是foo.cloudapp.net。然后浏览器会询问foo的IP地址.cloudapp.net。此域名由Microsoft管理,他将返回您网站的当前IP地址。
如果您希望foo.com仍然可以访问www.foo.com,您必须设置DNS重定向,这样每当有人在浏览器中键入foo.com时,它们都会被重定向到www.foo.com 。然后,这将使浏览器解析foo.cloudapp.net,然后HTTP请求将被发送到您的站点。一些域名托管服务商对此收费(通常是象征性的费用),有些则将其作为免费服务提供。
HTH。