大学サイトに多く見られるhttps運用への注意

Updated / Published

ここ1、2年で多くの大学が公式サイトをhttpsでも接続できる運用に切り替えています。その背景の大きな理由に、SSL-VPNを導入しことがあるようですが、httpsでも接続できる運用に切り替えられたことで、Googleの検索結果の変化に伴った思わぬ落とし穴があることに注意しなければなりません

大学への導入が加速するSSL-VPN

企業、自治体、教育機関など様々ありますが、VPNを一番上手く活用しているのは圧倒的に大学のようです。「大学 VPN」のキーワードで検索しても特定の学部学科の有無に関わらず今や多くの大学がVPNサービスを提供していることがわかります。

VPNは大学であれば自宅や出張先などの学外のコンピュータ端末からでもインターネット環境さえあれば学内の認められたコンピュータ端末のように学内ネットワークに接続することができるサービスのことです。

VPNサービスの中でもSSL-VPNであればソフトウェアはブラウザひとつで学外からでも学生にe-ラーニングを受講させることができるなど、そのメリットが大きかったことも各大学で導入が急速に進んだ理由と言えるでしょう。

そして、SSL-VPNでは、もちろんSSLの証明書が必要になります。このSSL証明書の値段は実にピンキリで、実在証明つきのSSLともなれば年額最低5万以上、高強度暗号化のものともなれば20万以上する高価なものです。高価なため、加えて証明書を効率的に活用したい意図もあったのでしょうか、各大学はSSL-VPNを導入すると同時に公式サイト(全学サイト)まで含めて、SSLのhttpsでも接続できる運用体制へと変更しているようです。

httpsで接続できる大学サイトの一例

この傾向は今後も増えていくと考えられますが、httpsでも接続できる運用体制にしたことに思わぬ落とし穴が潜んでいたようで、Google検索結果の変更に伴い注意しなければならないことがあります。

httpsでも接続できる運用の場合のGoogle検索結果で注意すべきこと

今回、本題として言いたいことはこのセクションになります。ここでは一例として特定の大学について触れていることになりますが、あくまでも「気をつけてください」と注意を促すためだけの意図として汲み取って頂ければと思います。

さて、次のスクリーンショットはGoogleで「大学」のキーワードで検索した6ページ目にあたる検索結果です。

2014年3月30日時点の大学のキーワードでの検索結果6ページ目中段

ご覧の通りhttpとhttpsの両方がインデックスされておりURLの正規化が行われていない場合、Googleの検索結果ではhttpsの方の結果を優先的に表示するようになってきたようです。この変化はGoogleの検索結果のデザインが変更された3月から急激に多く見られるようになりました。そのためこの現象はスクリーンショットにおける大学だけに見られることではありません。2014年3月30日時点で「大学」のキーワードで調べただけでも既に数十の大学の検索結果でhttpsの結果を優先的に表示するようになっています。

そして、これにより問題が起きるのは、サイト内のコンテンツがSSL下で正常に閲覧できるようになっていない状態の場合です。Googleの検索結果から直にアクセスすると次のスクリーンショットのように非SSLコンテンツがブロックされて、見るも無惨に崩れてしまっています

  • httpsの場合
  • httpの場合

httpsで接続できるが非SSLコンテンツが含まれる大学サイトの一例

以上、ここで取り上げている大学の例はあくまでも「大学」のキーワードで上位に表示されたという一例に過ぎません(国立大学が多いのは上位に国立大学が多く表示されているため)。ここに掲載していない他の私立大学等でも同様の問題は多数起きています。

解決策と今後の展望

この問題が大学において多く見られるのは、単純に問い合わせや資料請求フォームのためにSSLを導入したなどとは違い、おそらくはVPNの導入にあたって全学的にSSL-VPNの導入が必要であったこと、そしてSSL-VPN導入によって公式サイトまで含めてhttpsで接続できる運用に切り替えたこどが大きな要因となっていると考えれます。

SSLで正常に閲覧できるようにしようとするとなると、まずは非SSLコンテンツを見極めて、SSL領域に設置しなおすなど、いろいろと修正作業が必要になることでしょう。そのため、まずは早急に一時的にでもhttpへ統一されることをおすすめしますが、加えて将来的な展望についてもお話しします。

まず、httpへ統一するだけであれば容易に対策・処置することができます。方法を2つ提示しますが、2つともきっちりやられることをおすすめします。

解決策その1. canonicalを設定する

この方法は人力が要るので、CMSなどを導入されている場合は比較的楽でしょう。

<head>
...
<link rel="canonical" href="http://w3g.jp/">
...
<head>

link要素でcanonicalを設定することでGoogle, MSNなどの検索エンジンの検索結果におけるURLを正規化できます。もし、httpsの方を真としたい場合は、<link rel="canonical" href="https://w3g.jp/">と記述します。

解決策その2. リダイレクトを設定する

こちらの方は比較的楽です。ここではWebサーバがApacheの場合の例を紹介します。Apacheであればhttpd.confや.htaccessなどのサーバ設定ファイルに以下を記述します。

RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule ^/ssl/(.*)$ - [L] #httpへの転送を除外するディレクトリ
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  • 1行目のRewriteEngine onはRewrite処理を可能にする記述です。
  • 2行目のRewriteCond %{HTTPS} onはhttpsがonであれば、つまりhttpsでアクセスしてきた場合を指します。
  • 3行目のRewriteRule ^/ssl/(.*)$ - [L]はsslのディレクトリについてはhttpへのリダイレクト対象から除外しています。そのままhttpsで接続させます。
  • 4行目のRewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]は、httpsからhttpへの同一リクエストを301ステータスで永続的なリダイレクトとして処理します。もし将来的にhttpsに統一するなら、RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]として、302ステータスで一時的なリダイレクトであることを示します。

これにより除外ディレクトリ以外はすべてのアクセスをhttp側に統一することができます。逆にhttps側に統一したい場合は、以下のように記述します。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^/open/(.*)$ - [L] #httpsへの転送を除外するディレクトリ
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

次期プロトコルであるHTTP2.0ではhttpsによる通信のみになるかも

今後の展望としては、いまのうちにhttpsへの運用に切り替えて、httpsへ統一しておくのが良いのかもしれません。

と言いますのは、WebサーバーにアクセスするためのプロトコルであるHTTPは、IETFによって現在主流となっているバージョン1.1から次世代のHTTP2.0への標準化対応が進められています。このHTTP2.0のベースとなっているSPDY(Googleが提唱し、ChromeやIE11でサポートされている高速化技術)は、httpsによる通信(TLS)を必須とします。これは犯罪者やハッカーによる盗聴、あるいは国家機関による監視が問題となっている昨今で、より安全な通信を守るというセキュリティ上の要求があるためです。

そうなった場合、一般のWebサイトなどでは高額なSSLの証明書のことが気になりますが、IETFでは、(1)証明書を伴わない暗号化、(2)証明書を利用する暗号化、(3)オープンなインターネット上のHTTP2.0ではhttpsのみを利用するという3つの案を提示しており、セキュリティ上および管理上の問題から(3)が望ましいのではないかという議論を現在進行形でおこなっているようで、未だその結論は出ていないようです。

というわけで、httpsでも接続できる運用にしておくに越したことはないでしょう。そして、できれば今回のGoogleの検索結果の問題もあるので、SEO上もURLはhttpsに統一するというのがベストプラクティスではないでしょうか。