Win8.1とWin7のIE11にHTTP Strict Transport Security(HSTS)が実装されたそうなので試してみる。
https://developer.mozilla.org/ja/docs/Security/HTTP_Strict_Transport_Security
参考は上記リンク。HTTP Strict Transport Securityとはサーバ側からクライアントに「これ以降HTTPSでアクセスしてこいや」という命令があったときにそれに従う機能である。命令を受け入れるとそれ以降はHTTPでアクセスしようとしてもHTTPSアクセスが強制されるようになる。
今回はいわゆるオレオレ証明書を使ってHTTPSサーバを立てる。言語はPythonでフレームワークはTornadoを使う。ページは"/"のみ存在しており、"/"へアクセスすると現在時間をヘッダにHSTSセットした状態で返す(ただしHTTPS強制が有効な時間は一分間に設定)。つまり一度"/"にアクセスすると、以降は有効期間が一分間のHSTSがセットされるというサイト。
このサイトはHTTPSでのみ公開される。HTTPでアクセスしても返すものがないのでエラーとなる。そんなものが下記のPythonスクリプト。
上記スクリプトを走らせて、https://localhost:8888/へアクセスしてみる。ブラウザはWin7で最新アップデートを適用したIE11。
サーバからのレスポンスとして現在時間が取得できている。
レスポンスヘッダを見てみるとStrict-Transport-Securityが設定されている。
Strict-Transport-Securityが設定された状態でURLのhttpsをhttpにしてアクセスしてみる。httpでアクセスしてもサーバからはエラーが返されるはずなのに、現在時間がbodyとして書かれたHTMLがサーバから返ってきている。これはHTTPSでリクエストが送られたということだろう。開発者ツールのほうではプロトコルはHTTPのままになっているが……
ただのhttpアクセスではエラーが出るのを確認するため、Strict-Transport-Securityの有効期間である一分待ったのちにhttpアクセスをもう一度かけてみた。結果は下記のようにエラー。
念のため仮想マシンでサーバを立て、FiddlerでキャプチャすることでHTTPアクセスをしていないか改めて確認してみた。
SSL通信でしかコンテンツを配信してないサーバにまずHTTPSアクセスしてHTTPS強制命令を取得。後にコンテンツのあるパスを打ち込んでHTTPアクセスするとアドレスバー内のアドレスがhttpsに書き換えられた状態でページが表示された。コンテンツのないパスを打ち込んでHTTPアクセスするとアドレスはhttpのまんまでNot Foundエラー表示。 両方の場合ともFiddlerでプロトコルを確認するとHTTPSアクセスしか行っていなかった。HTTPでのアクセスは一切なし。正しい。
さらに同じドメインへのリンクをhttp://始まりで置いてこれを踏んでみたところ、これもまたHTTPSでアクセスが行われた。HTTPS強制できている。
アドレスが手打ちだろうとリンク踏みだろうと、HTTPSの強制化が確認できた。
IE11に実装されたHSTSを試してみた。Strict-Transport-Securityをレスポンスヘッダにセットすることで以降のアクセスはHTTPSに強制されたようだ。だが一方で、Strict-Transport-Security有効状態でHTTPでアクセスしたときに、開発者ツールにはプロトコルがHTTPのままで表示された。ちょっと紛らわしい状態。
http://blogs.windows.com/msedgedev/2015/06/09/http-strict-transport-security-comes-to-internet-explorer-11-on-windows-8-1-and-windows-7/
ちなみにSSLを使うハードルの一つにSSL証明書が有料ということがある。これが無償配布される話が出ていてとても気になる。
http://itpro.nikkeibp.co.jp/atcl/column/14/346926/121500129/
https://developer.mozilla.org/ja/docs/Security/HTTP_Strict_Transport_Security
参考は上記リンク。HTTP Strict Transport Securityとはサーバ側からクライアントに「これ以降HTTPSでアクセスしてこいや」という命令があったときにそれに従う機能である。命令を受け入れるとそれ以降はHTTPでアクセスしようとしてもHTTPSアクセスが強制されるようになる。
今回はいわゆるオレオレ証明書を使ってHTTPSサーバを立てる。言語はPythonでフレームワークはTornadoを使う。ページは"/"のみ存在しており、"/"へアクセスすると現在時間をヘッダにHSTSセットした状態で返す(ただしHTTPS強制が有効な時間は一分間に設定)。つまり一度"/"にアクセスすると、以降は有効期間が一分間のHSTSがセットされるというサイト。
このサイトはHTTPSでのみ公開される。HTTPでアクセスしても返すものがないのでエラーとなる。そんなものが下記のPythonスクリプト。
import os
import datetime
import tornado.wsgi
import tornado.httpserver
HTML = """<!DOCTYPE html>
<html>
<head>
<meta>
<title>hello</title>
</head>
<body>
{0}
</body>
</html>
"""
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.add_header("Strict-Transport-Security", "max-age=60; includeSubdomains")
self.write(HTML.format(datetime.datetime.now()))
if __name__ == "__main__":
application = tornado.wsgi.WSGIApplication([
("/", MainHandler),
])
ssl_settings = {
"ssl_options": {"certfile": os.path.join("crt/tor.crt"),
"keyfile": os.path.join("crt/tor.key")}
}
container = tornado.wsgi.WSGIContainer(application)
http_server = tornado.httpserver.HTTPServer(container, **ssl_settings)
http_server.listen(8888)
tornado.ioloop.IOLoop.current().start()
上記スクリプトを走らせて、https://localhost:8888/へアクセスしてみる。ブラウザはWin7で最新アップデートを適用したIE11。
サーバからのレスポンスとして現在時間が取得できている。
レスポンスヘッダを見てみるとStrict-Transport-Securityが設定されている。
Strict-Transport-Securityが設定された状態でURLのhttpsをhttpにしてアクセスしてみる。httpでアクセスしてもサーバからはエラーが返されるはずなのに、現在時間がbodyとして書かれたHTMLがサーバから返ってきている。これはHTTPSでリクエストが送られたということだろう。開発者ツールのほうではプロトコルはHTTPのままになっているが……
ただのhttpアクセスではエラーが出るのを確認するため、Strict-Transport-Securityの有効期間である一分待ったのちにhttpアクセスをもう一度かけてみた。結果は下記のようにエラー。
念のため仮想マシンでサーバを立て、FiddlerでキャプチャすることでHTTPアクセスをしていないか改めて確認してみた。
SSL通信でしかコンテンツを配信してないサーバにまずHTTPSアクセスしてHTTPS強制命令を取得。後にコンテンツのあるパスを打ち込んでHTTPアクセスするとアドレスバー内のアドレスがhttpsに書き換えられた状態でページが表示された。コンテンツのないパスを打ち込んでHTTPアクセスするとアドレスはhttpのまんまでNot Foundエラー表示。 両方の場合ともFiddlerでプロトコルを確認するとHTTPSアクセスしか行っていなかった。HTTPでのアクセスは一切なし。正しい。
さらに同じドメインへのリンクをhttp://始まりで置いてこれを踏んでみたところ、これもまたHTTPSでアクセスが行われた。HTTPS強制できている。
アドレスが手打ちだろうとリンク踏みだろうと、HTTPSの強制化が確認できた。
IE11に実装されたHSTSを試してみた。Strict-Transport-Securityをレスポンスヘッダにセットすることで以降のアクセスはHTTPSに強制されたようだ。だが一方で、Strict-Transport-Security有効状態でHTTPでアクセスしたときに、開発者ツールにはプロトコルがHTTPのままで表示された。ちょっと紛らわしい状態。
http://blogs.windows.com/msedgedev/2015/06/09/http-strict-transport-security-comes-to-internet-explorer-11-on-windows-8-1-and-windows-7/
ちなみにSSLを使うハードルの一つにSSL証明書が有料ということがある。これが無償配布される話が出ていてとても気になる。
http://itpro.nikkeibp.co.jp/atcl/column/14/346926/121500129/
スポンサーサイト