はじめに
本記事では、SSL/TLS証明書(以下「証明書」)の確認方法をわかりやすく解説します。業務でサーバーを管理する方、運用や開発に関わる方、あるいは個人で安全な接続を確認したい方に向けた実用的な手順を中心にまとめています。
対象読者
- サーバー管理者やWeb開発者
- テストや運用を行うエンジニア
- セキュリティに関心のある一般ユーザー
専門知識がなくても読み進められるよう、専門用語は最小限に抑え、具体例を交えて説明します。
本記事の目的と構成
本稿は次の内容を順に扱います。
– OpenSSLコマンドを使った詳細確認方法
– サーバーへ直接接続して証明書を取得する手順
– ブラウザやオンラインツールを使った簡単な確認方法
– 証明書の主要な構成要素と実務での活用ポイント
各章で実際に試せるコマンドや操作例を示しますので、手順に沿って確認できます。
証明書確認が重要な理由
証明書は「通信先が正しいか」を確認するためのものです。期限切れや名前の不一致、信頼チェーンの問題は接続障害やセキュリティリスクに直結します。定期的に確認することで、障害や事故を未然に防げます。
次章からは、まずOpenSSLコマンドを使った具体的な確認方法を詳しく説明します。
OpenSSLコマンドを使用した証明書情報の確認方法
基本構文
証明書ファイルを確認する代表的なコマンドは以下です。
openssl x509 -in <証明書ファイル> -text -noout
-in でファイルを指定し、-text で詳細表示、-noout で証明書自体のバイナリ出力を抑えます。
主要オプションの説明
- -text:証明書の内容を人が読める形式で表示します。署名アルゴリズムや拡張情報も含まれます。
- -noout:証明書のPEMデータそのもの(—–BEGIN CERTIFICATE—–)を表示しないようにします。
- -issuer:発行者(CA)の情報だけを表示します。例:/CN=Example CA
- -subject:証明書の所有者情報だけを表示します。例:/CN=www.example.com
- -serial:シリアル番号を表示します。管理や照合に便利です。
具体例と使い方
1) 詳細を確認したいとき:
openssl x509 -in cert.pem -text -noout
有効期限(Not Before/Not After)や拡張(SAN)を確認します。
2) 発行者だけ見たいとき:
openssl x509 -in cert.pem -issuer -noout
3) 所有者やシリアルだけ知りたいとき:
openssl x509 -in cert.pem -subject -serial -noout
出力の読み方のポイント
- Subject の CN が接続先のドメインと一致するか確認します。
- Validity にある開始・終了日時を確認し、期限切れでないか確かめます。
- Serial は管理用の一意識別子です。問題発生時の照合に使います。
上記を組み合わせると、短時間で必要な証明書情報を取り出せます。
証明書情報の主要な構成要素
Version
証明書のバージョンを示します。通常はv1〜v3で、v3では拡張機能(後述)が使えます。
Serial Number(シリアル番号)
発行者が付与する一意の番号です。紛失や不正時は失効リストで照合します。例:0A:3B:…
Signature Algorithm(署名アルゴリズム)
証明書を発行したときに使った署名方式です。例:sha256WithRSAEncryption。暗号強度の目安になります。
Issuer(発行者)
証明書を発行した認証局(CA)の情報です。組織名や国名が表示され、信頼の根拠になります。
Validity(有効期限)
notBefore(有効開始)とnotAfter(有効終了)で示します。期間外の証明書は無効です。
Subject(サブジェクト)
証明書が発行された主体の情報です。ドメイン名や組織名が含まれます。例:CN=example.com
Public Key(公開鍵)
公開鍵の種類と長さを示します(例:RSA 2048, ECDSA P-256)。鍵長は安全性に影響します。
X509v3 Extensions(拡張項目)
Subject Alternative Name(SAN):複数のホスト名/IPを指定します。Key Usage:鍵の用途(署名・暗号化など)。Basic Constraints:CAかどうかを示します。CRL Distribution PointsやAuthority Information Accessで失効情報や発行者の確認ができます。
各項目をチェックすることで、証明書が誰のためで、いつ有効で、どれくらい安全かを判断できます。用途に応じてSANやKey Usageを特に確認してください。
サーバーに接続して証明書を確認する方法
概要
リモートのTLSサーバーに直接接続して、証明書チェーン全体を取得・確認する方法を説明します。ここでは openssl の s_client を使った手順と、取得した証明書を読みやすいテキスト形式で表示する例を紹介します。
基本コマンド例
1) サーバーへ接続して証明書を表示する基本形:
openssl s_client -connect example.com:443 -servername example.com -showcerts
- -connect でホストとポートを指定します。HTTPSなら通常443です。
- -servername はSNI対応の仮想ホストに必要です。
- -showcerts でチェーン中のすべての証明書(PEM形式)を出力します。
2) 証明書をテキストで見る例:
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | openssl x509 -text -noout
パイプで openssl x509 に渡すと、最初の証明書(通常はサーバー証明書)を読み取り、人が読める内容(Subject、Issuer、有効期間、拡張など)を表示します。
取得した証明書をファイルに保存して確認する
チェーン全体をファイルに保存するには次のようにします。
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null 2>/dev/null | sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' > certs.pem
保存後、個別に確認するには:
openssl x509 -in certs.pem -noout -text
複数枚ある場合はファイルを分割して個別に確認してください。
他のプロトコルや注意点
- SMTPやIMAPなどでは -starttls smtp のように指定して接続します。
- SNIを指定しないと仮想ホストの正しい証明書が返らないことがあります。必ず -servername を使ってホスト名を渡してください。
- 出力には接続情報やエラーも含まれます。不要な表示を抑えるために標準エラーを/dev/nullに捨てることを示しました。
確認すべきポイント
- 有効期限(Not Before / Not After)
- サブジェクト(CNやSAN)と接続先のホスト名の一致
- 発行者(Issuer)とチェーンの整合性
- 拡張(キー用途、拡張キー用途)
これらの手順で、リモートサーバーの証明書チェーンを取得し、必要な情報を丁寧に確認できます。
ブラウザを使用した証明書確認方法
概要
ブラウザのアドレスバーにある錠前アイコン(鍵マーク)から、SSL/TLS証明書の基本情報を手軽に確認できます。コマンドや専門ツールが不要で、だれでもすぐに有効期間や発行者を確認できます。
Google Chrome(例)
- アドレスバーの錠前アイコンをクリックします。
- 「接続は保護されています」や「証明書(有効)」を選びます。
- 「証明書」をクリックすると、発行者、対象ドメイン、有効期間(例: 2024/01/01〜2025/01/01)などが表示されます。
Firefox
- 錠前アイコンをクリックします。
- 「接続の保護」を選び、「もっと見る」→「証明書を表示」をクリックします。
Safari(macOS)
- 錠前アイコンをクリックして「証明書を表示」を選びます。
- 詳細が小さなウィンドウで表示されます。
確認すべきポイント(わかりやすく)
- 有効期間:期限切れでないか確認してください。
- ドメイン名:表示されるドメイン(CNやSAN)がアクセス先と一致するか見てください。
- 発行者:信頼できる認証局(例: Let’s Encrypt、DigiCert)か確認します。
- 失効情報:ブラウザの警告や詳細情報でOCSP/CRLの状態が確認できる場合があります。
便利な操作
- 証明書表示画面から証明書をエクスポートして、詳細を別のツールで確認できます。
- 錠前アイコンがない、赤い警告が出る場合は証明書に問題がある可能性が高いので、アクセスを控えるか運営者に連絡してください。
以上で、ブラウザを使った簡単な証明書確認方法の説明です。
オンラインツールを使用した確認方法
この章ではQualys SSL LabsのSSL Server Testを例に、オンラインで証明書やTLS設定を確認する方法をわかりやすく説明します。
手順
- サイトにアクセスして、調べたいドメイン(コモンネーム)を入力します。テストを開始すると数分かかることがあります。
- テスト結果はドメイン全体の評価(A+〜F)と詳細項目に分かれます。複数IPがある冗長化環境でも各IPごとの結果が表示されます。
主な見方と具体例
- Grade:総合評価。運用上の目安にします。
- Certificate:有効期限、サブジェクト、発行者、中間証明書の有無。チェーンが途切れていれば「中間を設置する」と問題が解決します。
- Protocols/Ciphers:TLSのバージョンや暗号。TLS1.2/1.3が推奨です。弱い暗号はサーバー側で無効化します。
- OCSP/HSTS/Forward Secrecy:応答がない場合は設定を見直します。
冗長化環境の注意点
各IPで異なる証明書や古い設定が混在することがあります。表示を比べて、全部のノードで統一した設定に整えてください。
対応例
- 証明書チェーン不備→中間証明書を追加
- 古いTLS対応→サーバー設定で無効化
- 弱い暗号→優先順位を変更または削除
外部から見える形でのチェックなので、ファイアウォールや内部ネットワークの影響は反映されません。定期的に確認することをおすすめします。
証明書確認の活用ポイント
1) 有効期限の定期確認
- 何を確認するか:有効期限(Not After)を確認します。
- 活用例:切れそうな証明書は事前に更新通知を出してダウンタイムを防ぎます。
2) 発行者と対象の整合性
- 何を確認するか:発行者(Issuer)とサブジェクト(Subject)を照合します。
- 活用例:社内サーバーなのに外部CAが発行している場合は意図しない証明書発行を疑います。
3) 公開鍵とアルゴリズムの確認
- 何を確認するか:鍵長や署名アルゴリズム(例:RSA 2048-bit、ECDSA)を確認します。
- 活用例:弱いアルゴリズムは更新計画を立てます。
4) 拡張フィールドの検証
- 何を確認するか:SAN(Subject Alternative Name)、拡張キー使用法などを確認します。
- 活用例:ドメイン一覧に必要なサブドメインが含まれているかをチェックします。
5) 証明書チェーンと失効情報
- 何を確認するか:チェーンが完全か、CRL/OCSPで失効していないかを確認します。
- 活用例:中間CAが失効すると影響範囲を把握して速やかに対応します。
6) 運用への組み込みと自動化
- 何を行うか:監視ツールやスクリプトで自動チェックを実装します。
- 活用例:期限が近づいたらアラートを出す、更新手順を自動化する。
7) トラブル対応のポイント
- 例:接続できない場合はチェーン漏れ、名前不一致、期限切れを順に確認します。
- ポイント:まず証明書情報を確認し、原因を特定して対策を取る流れを習慣にします。












