SSL, 運用管理

老若男女の皆様初めまして。

映画大好き下っ端新米ツチノコのshirokumaと申します。

ツチノコなのにshirokumaです。ʕ゚ᴥ゚ʔガオー!!

 

ところで皆さん『ターミネーター:新起動/ジェニシス』は見ましたか?

これから見る方はぜひターミネーター1と2を予め見ることをオススメします!

 

あ、watakenさん!僕が読んでるライトノベルはこちらですよ!

 

さて、本題ですが今回の記事はSSLに関するお話です。

 

shirokumaは主にDMMサービス運用を担当しているのですが、

サービス運用を行う上でSSLの更新は必須の定期業務です。

サービスの運用を行っているエンジニアの方であれば皆さん一度は経験があると思います。

 

そんなSSLについて総務省から以下の様な発表がありました。

http://www.soumu.go.jp/main_sosiki/joho_tsusin/security/enduser/security01/12.html

 

SHA-1からSHA-2への移行についての発表です。

SHA-1からSHA-2への移行にて最も影響を受けるものはフィーチャーフォン(ガラケー)だと思われます。

 

なので、各キャリア様からも以下の様なお知らせが出ております。

NTTdocomo様

https://www.nttdocomo.co.jp/info/notice/pages/150715_00.html

KDDI様

http://www.kddi.com/important-news/20150715/

SoftBank様

http://www.softbank.jp/mobile/info/personal/news/support/20150715a/

 

一部のフィーチャーフォン端末ではSHA-2に対応できていない実情があります。

この辺りは各社の運用を行っているエンジニアが頭を悩ましているかと思います。

shirokumaもその一人です。タスケテ!

 

さらには、先日シマンテック様よりこんな発表がありました。

以前は必須となっていたクロスルート証明書の設定が今後はサーバの用途に合わせて有無を選ぶ事になりそうです。

 

そんな紆余曲折を辿りそうなSSLの中間証明書についてのナレッジご紹介致します。

SSL証明書の更新業務はshirokumaの様にエンジニアとして日が浅い人間が実施する機会が多いかもしれません。

そんな人達の助けになれば幸いです!

 

事の発端はshirokumaがSSL更新作業を行った後の中間証明書の正常性を確認をしている時でした。

弊社では確認手段としてmodern.IEのXP環境にてIE6のブラウザで階層構造を確認していました。

これは以下の二点を踏まえてshirokumaが決めた運用となります。

  • 最近のブラウザでは中間証明書をキャッシュする機能があるので確実な確認手段として不適切である。(初期のIE6にはキャッシュ機能はありません)
  • 実際にユーザーが見るのはブラウザを使うのだからできるだけブラウザで行いたい。

弊社では中間証明書を適用する際はクロスルートを証明書込みのものを利用しているのでXP環境では4階層に見えるはずです。

 

ʕ゚ᴥ゚ʔ  「さて、証明書更新も終わったし今日の晩ご飯何しようかなぁ・・・・・・・・ん?」

shirokuma-001

 

三階層になってるうううううううううううううううううううう!?!?!?!?!?!?!?!?!?

ええ。焦りましたよ。そりゃもう。

設定した箇所や手順を見直しても特に間違っている点はありません。

試しにテストページをフィーチャーフォンで開いて見たところ正常に開けました。

 

ʕ゚ᴥ゚ʔ  「クロスルートが適用されているのに3階層で見える・・・・?」

002

ʕ゚ᴥ。ʔ  「ルート証明書が自己証明しているように見え・・・・る・・・・?」

 

青狸に助けを求める眼鏡少年の如き勢いでシマンテックカスタマーサポートに連絡を取りました。

すると以下の様な事を懇切丁寧に教えてもらえました。

※シマンテックカスタマーサポート様、本当にありがとうございます。

 

Q : そもそもブラウザで見る事ができる『4階層』と『3階層』って何が違うの?

A: 違いは『VeriSign Class 3 Public Primary Certification Authority – G5』(通称:G5証明書)がOS/ブラウザにインポートされているかどうかで変わります。G5証明書はシマンテック(旧:ベリサイン)のルート証明書です。ルートのG5証明書はブラウザの階層チェーンには表示されない仕様なので、G5証明書がブラウザにインポートされていれば3階層』『G5証明書がインポートされていなければ4階層』といった形で表示されます。

 

詳細を以下の表にまとめてみました。

003

 

 

Q : G5証明書がインポートされていない環境って?

A: 最近のブラウザではPC/スマフォ問わずにG5証明書が予めインポートされています。ですがwindowsXPのSP2以前やフィーチャーフォンの一部端末はG5証明書がインポートされておらず、『VeriSign Class 3 Public Primary CA』(通称:G1証明書)がインポートされています。G1証明書は直接G3証明書をチェーンする事ができないので必ずG5証明書が必要となります。

 

Q : G5証明書って二種類あるの?

A: 非常にややこしいのですが、『VeriSign Class 3 Public Primary Certification Authority – G5』は全く同じ名前でルート証明書とクロスルート証明書がそれぞれ存在します。なので、証明書のChainを確認する際は表示されている『VeriSign Class 3 Public Primary Certification Authority – G5』がルート証明書なのかクロスルート証明書なのかを必ず確認してください。

※shirokumaがXP環境で確認した際に自己証明されていると見えたものはG5ルート証明書がG5クロスルート証明書を証明していた結果です。ややこしいですね。

 

—–

SSLは普段業者から発行されたものを手順に従って適用していたので深く調べた事が無かったのですが、シマンテックカスタマーサポートに問い合わせて色々聞いてみると奥が深かったです。
頂いた情報を元に弊社のXP環境で3階層に見えた理由を調べてみると……..

 

ʕ゚ᴥ゚ʔ  「あ、WindowsUpdateでIE6がSP3にバージョンアップしてる」

※IE6のSP3以降は『VeriSign Class 3 Public Primary Certification Authority – G5』がインポートされています。

「環境変わってるじゃねぇか!」と言われました。しょうもない理由で申し訳ありません・・・・・orz

 

—-

今後のSSL証明書更新後の中間証明書確認方法について

カスタマーサポートの方からお話を聞いた結果以下の方法が現在のbestと考えております

■対象SSLがインターネットから参照できる場合

Symantec SSL Toolboxを初めとしたインターネット上の確認ツールを使うのがbestかと思います。ただし使用する際はツールがどういった条件(確認する際に使用するルート証明書等)についてよく確認してから使用してください。ちなみにSymantec SSL Toolboxは『VeriSign Class 3 Public Primary Certification Authority – G5』のルート証明書を前提で確認するとの事です。

■対象SSLがインターネットから参照できない場合

Linux環境にて以下の様なopensslコマンドを実行してChain情報を確認する方法がbestかと思います。

 # openssl s_client -connect example.dmm.com:443 -showcerts

 

一先ずこのポリシーで今後は確認をしたいと考えています。

もっと良い方法をご存知の方が居ましたら教えて頂ければと思います!!

—-

ついでに聞けたこと

『VeriSign Class 3 Public Primary Certification Authority – G5』がインポートされているブラウザにてサーバ証明書が設定されたページにアクセスすると中間証明書が設定されていないor間違って設定されていたとしてもブラウザが自動で中間証明書(G3証明書)をダウンロードしてChainしてくれる機能があるそうです。すごい!

※推奨はされていません。必ず正しい中間証明書を設定しましょう

SSL, 失敗談

世の中ではSSL証明書のSHA-2への移行が騒がれていますね。
Chromeが突然警告出すようになったので、あまり詳しくない友人がビックリして「何これ?開くと危険なの!?」と私に聞いてきたりしました。(これは私が以前「この緑色は安全の証なんだよ」と教えたせいでもありますが)

そんな中、とあるサイトのSSL証明書が有効期限を迎えたので、SHA-1・SHA-2どちらで更新するか事業部に相談、PC専用サイトということでSHA-2で更新したのですが、ある問題が発生してしまいました。

その問題とは「MacOS Mavericks+Chromeの組み合わせだけ、SHA-1と同じ警告が出る」というイレギュラーなもの。WindowsでもYosemiteでも緑色になるのに、何故かMavericksだけ・・・

あ、ここでSHA-1の警告についておさらい。
参考資料:https://www.jp.websecurity.symantec.com/sid-partner/products/pdf/chrome_sha1deprecation_201409_1.pdf

■Chrome v40(2015/2/20現在最新)

有効期限終了日(GMT) SHA-1/SHA-2 アドレスバーの表示
2016/5/31以前 SHA-1 緑色
2016/5/31以前 SHA-2 緑色
2016/12/31以前 SHA-1 黄色
2016/12/31以前 SHA-2 緑色
2017/1/31以降 SHA-1 白色(http:// と一緒)
2017/1/31以降 SHA-2 緑色

■ Chrome v41(2015/4 一般リリース予定)

有効期限終了日(GMT) SHA-1/SHA-2 アドレスバーの表示
2015/12/31以前 SHA-1 緑色
2015/12/31以前 SHA-2 緑色
2016/12/31以前 SHA-1 黄色
2016/12/31以前 SHA-2 緑色
2017/1/31以降 SHA-1 赤色(取消し線)
2017/1/31以降 SHA-2 緑色

要はSHA-1で出す場合「有効期限日を2015/12/31まで」にしないと警告が出てしまい、SHA-2なら有効期限にかかわらず警告は出ない。という趣旨ですね。

では何でMavericks+Chromeだけ警告が出たのか。Symantecさんに問い合わせた結果、以下の事実が判明しました。

Mavericksは1024bitと2048bitの2つのルート証明書を持っているが、証明書の検証をする際に証明書の鍵長や署名アルゴリズムに関わらず1024bitのルート証明書を辿る挙動になる。
1024bitのルート証明書に辿りつくためにはSHA-1で署名されたクロスルート証明書が必要となるが、ChromeのSHA-2判定基準はサーバ証明書・中間証明書群全てSHA-2であることが求められるため、判定がSHA-1となりアドレスバー警告が表示される。

よく解らないですよね。はい。。ということで図解してみました。

Marvericks+ChromeのSHA-1証明書警告について

困った問題ですねぇ。教えてGoogle先生っ!

google.com_cert

何この証明書。。さっさとSHA-2移行しろと言わんばかりに警告出しておいてコレかーぃ!!

取りあえずSHA-1にしろSHA-2にしろ、有効期限を2015/12/31で出すしかないのかな。。

 

SSL

 

理由を説明しますと、

クロスルート証明書が正しくインストールされているかどうかを確認するにはこの方法しかないためです。

過去にクロスルート証明書の設定に問題があり、

通常のブラウザ(といってもie7以上)での動作確認はエラーとならないため、指摘されるまで気づかなたったという件がありました。

よくよく確認していくと

ie6やネットスケープナビゲーターじゃないとクロスルート証明書が正しく設定されているのかが確認ができないことがわかりました。

こうやって、

dmmのie6は1台のpcだけ存在し隔離された状態で細々と現役を続行していくこととなります。

 

クロスルート証明書を使うと

ガラケーなどの古いブラウザでもサイトの認証が可能となり安全なSSL通信が可能となります。

古いブラウザ⇒中間CA⇒最新ルートCA(クロスルート)⇒昔のルートCA⇒サイトの認証OK

という流れですが、

クロスルート証明書を使わないと

ガラケーの古いブラウザには最新のルートCAがプリインストールされておりませんので、

下記のように

古いブラウザ⇒中間CA⇒最新ルートCA⇒サイトの認証エラー

最新のルートCAは信頼されずサイトの認証はエラーとなってしまいます。

一方、ie7以上のブラウザなら下記の通りエラーとはなりません。

最新ルートCAがプリインストールされたブラウザ⇒中間CA⇒最新ルートCA⇒サイトの認証OK

 

 

最後にie6とie10の見え方の違いをご紹介します。

ie6はクロスルート証明書を含む4階層

ie6

ie10はクロスルート証明書は必要ないので3階層

ie10

 

これを見るとわかっていただけると思うのですがie7以上だとクロスルートを必要としないので動作確認ができないんですね。

PAGE TOP