2017-12-30 61 views
1

Azure Appサービス(Tomcat 8.5、Java 8)にデプロイされたSpring Boot Webアプリケーションに対してHTTPSを有効にするにはどうすればよいですか? VerisignのカスタムドメインとSSL証明書が既に用意されています。私がSpringブートWebアプリケーションをAzure TomcatベースのアプリケーションサービスにWARとしてデプロイしているので、ほとんどのブログは組み込みのTomcatサーバーのシナリオと自己署名証明書を使用しています。私は次の行を追加しました:Azure AppサービスにデプロイされたSpring Boot WebアプリケーションのHTTPS

server.port=443 

そして、STSからAzureにWebアプリケーションをデプロイしました。しかし、私はhttps://custom.domain.nameにアクセスする場合、私は何の応答も戻って取得しないと私はhttp://custom.domain.nameをacccessしようとした場合、私はオリジンサーバがターゲット リソースのためか、現在の表現を見つけることができませんでした

次のメッセージで404を取得しますあるものが存在することを明らかにすることはできません。

私がこれを動作させるために必要なのは、HTTPS要求のみを処理し、HTTPを介して要求が行われた場合は、HTTPSに強制します。

+1

あなたにもSSL通信を強制するために、あなたのweb.xmlを更新しましたか? http://wiki.metawerx.net/wiki/ForcingSSLForSectionsOfYourWebsite – chenrui

+0

完全にJavaベースの設定で 'application.properties' - ' security.require-ssl = true'と 'server.port = 443'に2つのプロパティを追加しました。これはSpringブートアプリケーションなので、web.xmlを追加できるかどうかはわかりませんでした。 –

+0

埋め込みスプリングブートを使用するようにしましたか? – chenrui

答えて

1

これは代わりに、アプリケーションコードに衝突する前にトラフィックに適用されているTLSオフロードが既にあるため、80/TCPを聞きます。

両方 https://your.domain

http://your.domainはあなたがTLSのいずれかを処理せずに、自分のアプリで80/TCPになってしまいます。

は、より包括的な説明については、この答えをチェックアウト:https://stackoverflow.com/a/38726543/4148708

+0

私は暗黙のフロントエンド層を認識していませんでした。だから私は 'application.properties'からプロパティを削除し、Azureに再デプロイしました。私は今、http://custom.domain.nameを打つことができますが、私は郵便配達所でテストすると、https://custom.domain.nameは '応答を得ることができませんでした。それは郵便配達の設定だったことが判明したので、説明したように動作します。 HTTP経由でリクエストを拒否したい場合、HTTPSのみを強制するにはどうすればよいですか? –

+0

私の以前のコメントがあいまいだった場合は、あなたの提案が働いたことを明確にしたいと思います。このアプリケーションでは何もする必要はありませんでした。 Postmanの設定でSSL証明書の確認を無効にすると、HTTPとHTTPSの両方の要求が機能していました。 Azure拡張機能があり、HTTPリクエストをHTTPSにリダイレクトできるようになったので、意図したとおりに動作するように見えます。ありがとう! –

+1

はい、web.configに書き換えルールを追加してHTTPSを強制します。あなたのアプリの "人生"がそれに依存している(または、あなたが暗号化の証明を提供することを義務づけている規制の下にある)場合は、リクエスト内の 'X-ARR-SSL'ヘッダーの有無をチェックします。そうでなければ、書き換えルールで十分です。 – evilSnobu

関連する問題