2012-03-01 13 views
3

私は、SSLが私のAzureプロジェクトの1つで動作するが、別のものでは動作しない理由を理解しようとしています。SSLがAzureインスタンスで動作することができません

サイトに移動すると、https://foo.comといっても、サイトに接続することはできません。ブラウザはまったく接続できず、カールは"couldn't connect to host"と表示されます。ただし、私がcloudapp.netのURL(例: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> 

アズールコンソール:

私がいることを確認しました:

私の証明書が

  • をアップロードされ、それは拇印だ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

+0

foo.comが動作しない場合は、www.foo.comを試してください。 – knightpfhor

+0

はい私は正しくSSLに接続してhttp://foo.comに接続できます。私はこれを示すためにオリジナルの投稿を更新しました。 – TMC

答えて

1

あなたの問題が間違っている場所を探している可能性があります。

どのようにfoo.comをあなたのサイトのアドレスにマップしましたか?

Azureインスタンスには動的IPアドレスが与えられます。あなたのサイトが現在どのアドレスにあるかは明日の予定ではないかもしれません。 Azureの推奨事項は、 "foo.cloudapp.net"を指すドメインレコードに "www" CNAME DNSエントリを追加することです。

このようにして、誰かがwww.foo.comを閲覧すると、DNSサーバは「実際には、そのサイトはfoo.cloudapp.netと同じです」と言うでしょう。 foo.cloudapp.net。このドメインはあなたのサイトの現在のIPアドレスを返すマイクロソフトによって管理されています

foo.comがwww.foo.comにアクセスできるようにするには、誰かがfoo.comをブラウザに入力するたびにwww.foo.comにリダイレクトされるので、foo.cloudapp.netを解決するためにブラウザが呼び出され、HTTPリクエストがサイトに送られます。一部のドメインホスティング事業者はこれを徴収し(通常は名目上の手数料)、一部は無料サービスとして提供しています。

HTH。

+0

http://foo.comは問題なく動作しますが、https://foo.comが壊れています。 – TMC

関連する問題