はじめに
本記事は、Webサイトやサーバーが使っているSSL/TLSのバージョンを確認する方法を分かりやすく解説します。SSL/TLSは通信を暗号化する仕組みで、古いバージョンには安全上の問題があるため、どのバージョンが使われているか確認することが大切です。
この記事の目的
- 利用中のサイトやサーバーで使われるTLSバージョンを見つける手順を示します。
- ブラウザ、コマンドライン(OpenSSL)、オンライン診断、パケットキャプチャの方法を紹介します。
- 各手法の特徴や注意点、簡単な判断基準も説明します。
対象読者
- サイト管理者やシステム担当者
- セキュリティの基本を知りたい運用担当者
- 専門用語に不安がある方でも読み進められるよう配慮します。
進め方
各章で具体的な手順と画面例、確認時の注意点を順に取り上げます。まずは簡単な方法から始め、必要に応じてより詳しい確認へ進んでください。
ブラウザを利用した確認方法
概要
Google Chromeを使った最も簡単なSSL/TLSバージョンの確認方法を説明します。対象サイトにアクセスし、開発者ツールの「Security」タブで接続情報(TLSバージョンや暗号スイート)を確認します。操作が簡単で短時間に安全性の目安を把握できます。
手順(Google Chrome)
- HTTPSでサイトにアクセスします。URLが「https://」であることを確認してください。
- 開発者ツールを開きます(Windows: F12 または Ctrl+Shift+I、Mac: Command+Option+I)。
- タブの中から「Security」を選びます。見当たらない場合は右端の「>>」から探してください。
- 「Connection」欄にあるProtocolやCipherを確認します。Protocolに表示されるのが使用中のTLSバージョンです(例: TLS 1.3)。
見方のポイント
- TLS 1.2以上(特に1.3)は安全性が高く推奨されます。古いバージョン(TLS 1.0/1.1)は脆弱と見なされます。
- Cipher(暗号スイート)も確認し、ECDHEやAES-GCMなどの近代的な組合せが使われているかを見ます。
注意点
- ページを読み込む前に開発者ツールを開くと正しい情報が表示される場合があります。キャッシュの影響もあるため、表示が怪しいときは再読み込みしてください。
- ブラウザによって表示場所や表現が異なることがあります。古いブラウザではSecurityタブが無い場合があるので、その場合は別の方法で確認してください。
コマンドラインを利用した確認方法
概要
LinuxやMacでOpenSSLコマンドを使い、サーバのSSL/TLSバージョンを直接確認します。画面に表示される「Protocol」やハンドシェイクの情報でバージョン可否を判断できます。
基本コマンド
最も基本的な実行例は次の通りです。
openssl s_client -connect example.com:443 -servername example.com
成功すると接続情報がずらっと表示され、その中に
SSL-Session:
Protocol : TLSv1.3
のような行が出ます。Protocolが表示されれば、そのバージョンで接続できたと判断します。
特定のTLSバージョンで確認する方法
特定のバージョン(例:TLS1.2やTLS1.3)で試すにはオプションを指定します。
openssl s_client -connect example.com:443 -servername example.com -tls1_2
openssl s_client -connect example.com:443 -servername example.com -tls1_3
バージョン指定でエラーや接続失敗が出れば、そのバージョンは受け入れられていないと判断できます。成功時は前述のProtocol行で確認してください。
解釈と注意点
- SNIが必要なサイトでは-servernameを忘れないでください。これを入れないと別の証明書やエラーになることがあります。
- OpenSSLのバージョンによってオプション対応が異なります。古いOpenSSLでは-tls1_3がない場合があります。
- 接続成功=安全というわけではありません。プロトコルバージョンだけでなく、証明書や暗号スイートも確認してください。
以上がコマンドラインでの基本的な確認方法です。次章ではオンライン診断ツールの使い方を説明します。
オンライン診断ツールを利用した確認方法
概要
ブラウザやコマンドを使わずに、ウェブ上のサービスでSSL/TLS設定を確認できます。ドメイン名を入力するだけで、利用中のTLSバージョンや暗号スイート、証明書情報を一覧で取得できます。
代表的なツールと特徴
- SSL Labs(Qualys): 詳細なレポートと互換性評価。導入段階での総合診断に向きます。
- CDN77 TLS Test: シンプルで表示が分かりやすい。すばやくバージョン確認したいときに便利です。
- 他の選択肢: ImmuniWeb、SSL Checkerなども短時間で確認できます。
使い方(基本手順)
- サイトにアクセスし、確認したいドメイン名を入力します。
- 「テスト開始」「Submit」などを押して診断を実行します。
- 結果が表示されるまで数秒〜数分待ちます(サービスにより差があります)。
出力の見方(TLSバージョン確認のポイント)
- 「Protocol」や「TLS」欄で使用可能なバージョン(例: TLS 1.2, TLS 1.3)が表示されます。
- 優先順位やサーバが提示する順序も確認してください。古いバージョン(SSLv3、TLS 1.0/1.1)がある場合は注意が必要です。
注意点
- 公開サーバ向けの診断に適しています。イントラネットや認証が必要な環境は正確に診断できない場合があります。
- プライバシー上、機密情報を入力しないでください。診断対象はドメイン名のみで十分です。
簡単な実例
SSL Labsでドメインを入力すると、総合評価(A〜F)と共にサポートするTLSバージョン一覧が上部に表示されます。まずそこを確認すれば、対応状況がすぐに分かります。
パケットキャプチャを利用した詳細な確認方法
概要
ネットワーク上のやり取りを直接見ることで、TLSのネゴシエーションや使われているバージョンを確実に確認できます。特にDb2 JDBCクライアントなど、アプリケーション側のログだけでは分からない場合に有効です。
準備
- 作業前に必ず管理者の許可を得てください。個人情報や機密を扱う可能性があります。
- キャプチャを行う端末でネットワークインターフェースを確認します(例: ip link や ifconfig)。
tcpdumpでの取得(例)
- 基本コマンド: sudo tcpdump -i <インターフェース> -s 0 -w capture.pcap host <対象ホスト> and port <ポート>
- -s 0: パケット全体を保存
- -w: pcapファイルに保存
- Db2の場合はデフォルトで50000等のポートを使うことが多いので、対象環境のポート番号を確認して指定してください。
Wiresharkでの解析
- 保存したcapture.pcapをWiresharkで開きます。
- 表示フィルタに “tls” を入れてTLSパケットのみ表示します。古いバージョンでは “ssl” になる場合があります。
- Client Helloを選び、”Version”や”Supported Versions”拡張を確認します。ここでクライアントが提示した最大バージョンが分かります。
- Server Helloを確認し、サーバが選択したバージョンと暗号スイートを確認します。
- 手順: tls.handshake.type == 1(Client Hello)や tls.handshake.type == 2(Server Hello)で絞れます。
暗号化解除が必要な場合
- 通常、ECDHEなどの一時鍵を使うとサーバ秘密鍵では復号できません。
- 復号が必要なら、サーバの秘密鍵(非一時鍵の場合のみ)か、クライアントが出力するプリマスターシークレット(SSLKEYLOGFILE)を使います。ただし、どちらも運用上の制約と許可が必要です。
注意点
- 本番環境での長時間キャプチャは避け、必要最小限だけ取得してください。
- 法令や社内ルールを守り、機密データの扱いに十分注意してください。
TLSバージョンの重要性
なぜTLSバージョンが重要か
TLSのバージョンは通信の安全性を決めます。古いバージョンには既知の攻撃手法があり、データ盗聴や改ざんのリスクが高まります。例えば、古い暗号や脆弱なハンドシェイクは攻撃者に悪用されやすいです。
各バージョンの特徴(簡単に)
- TLS 1.0/1.1:古い仕様で複数の脆弱性が報告されています。現代の運用では非推奨です。
- TLS 1.2:標準的に安全とされ、多くのウェブサービスが採用しています。強い暗号や署名方式に対応します。
- TLS 1.3:最新で簡潔な設計です。不要な機能を削り、接続も速く安全性が高いです。
実務での優先順位と注意点
まずTLS 1.2以上の有効化を優先してください。旧バージョンの無効化で多くの攻撃を防げます。ただし古い端末や組み込み機器ではTLS 1.2非対応の場合があり、接続互換性を確認する必要があります。
具体的な対策例
- サーバー設定でTLS 1.0/1.1を無効化する。
- TLS 1.2以上を優先する暗号スイートを選ぶ。
- アップデートやライブラリの最新化でサポートを得る。
- 公開後はブラウザや診断ツールで再確認する。
安全性と互換性のバランスを取りながら、最低でもTLS 1.2、可能ならTLS 1.3への対応をおすすめします。
バージョン対応の実装例
対応時期の早見表
- OpenSSL 1.1.1系:2018年9月(TLS 1.3を含む)
- OpenSSL 3.0系:2021年9月
- Java SE/JDK 11:2018年9月
- Java SE/JDK 8(8u261以上):2020年7月
- Red Hat Enterprise Linux 8:2019年5月
実装例(設定の具体例)
-
Webサーバ(nginx)
ssl_protocols TLSv1.2 TLSv1.3;
これでTLS1.2/1.3を許可します。 -
Javaアプリ(起動オプション、Tomcatなど)
-Jvm起動時: -Djdk.tls.client.protocols=TLSv1.2,TLSv1.3
-Tomcat Connector: sslEnabledProtocols=”TLSv1.2,TLSv1.3″ -
OpenSSLを直接使うアプリ
SSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION);
OpenSSL 1.1.1以降ならTLS1.3も利用可能です。
運用上の注意
- ライブラリやOSのバージョンを確認して対応状況を確かめてください。古い環境ではアップデートやパッケージ変更が必要です。
- クライアント互換性を考慮して、まずTLS 1.2を有効にし段階的にTLS 1.3へ移行する運用が安全です。
まとめ
本書で紹介した通り、SSL/TLSのバージョン確認には複数の方法があります。用途に応じて使い分けると効率的です。
- ブラウザの開発者ツールは最も手軽です。例:Chromeのパッドロック→接続を確認。ちょっとした確認に向きます。
- コマンドライン(OpenSSLなど)はサーバー管理者向けで自動化が可能です。例:openssl s_clientで接続とサポートするプロトコルを確認します。
- オンライン診断ツールは外部から簡単にチェックでき、サーバー公開状況を把握できます。
- パケットキャプチャ(Wiresharkなど)は詳細解析に適し、ハンドシェイクの流れや暗号スイートを確認できます。
運用上の注意点として、定期的な確認を習慣にしてください。目安としてはソフト更新時や月次のチェックがおすすめです。現在の推奨はTLS 1.2以上、可能ならTLS 1.3を採用することです。古いプロトコル(SSLv3、TLS 1.0/1.1)は無効化し、変更後は必ず再検査してください。
最後に、対応が難しい場合はサーバー管理者やセキュリティ担当に相談すると安心です。












