このテストは何をチェックする?
KernelHost SSL CheckerはFrankfurtノードからTLSハンドシェイクでサーバー証明書を取得し、サードパーティ呼び出しなしで主要フィールドを表示します。次の項目をチェックして表示します:
- 発行先と発行者: Common Name(Subject CN)、フルのSubject DN、Issuer(どのCAが署名したか)。
- 有効期間: UTCでの開始日と終了日、残り日数。色分け: 緑(>30日)、橙(7から30日)、赤(7日未満または期限切れ)。
- Subject Alternative Names (SANs): 証明書がカバーするホスト名のフルリスト。ワイルドカードエントリも含みます。
- ホスト名一致: 入力したドメインが本当にCommon NameまたはSANワイルドカードでカバーされているか検証(RFC 6125)。
- 鍵と署名: 公開鍵アルゴリズム(RSA、ECDSA)、鍵のビットサイズまたは曲線名、署名アルゴリズム。
- フィンガープリントとシリアル: DERエンコード証明書のSHA-256とSHA-1フィンガープリント、十六進シリアル番号。
- フルチェーン: ハンドシェイクでサーバーが返したすべての証明書、Subject、Issuer、ロール(leaf、intermediate、root)。
よくあるSSLエラーとその意味
ブラウザはNET::ERR_CERT_DATE_INVALIDやSSL_ERROR_BAD_CERT_DOMAINのような分かりにくいエラーを表示します。よくある原因と対処を示します:
- 証明書の期限切れ: notAfter日付が過去になっています。ブラウザはページを完全にブロックします。対処: 証明書を更新します。Let's Encryptならcertbotやacme.shで60日ごとに自動更新されます。
- ホスト名の不一致: ホスト名がCommon NameにもどのSANにも入っていません。対処: 再発行時に必要なすべてのドメインとサブドメインをSANに追加します。
- 自己署名または不明なCA: Issuerが信頼されたルートCAではありません。ブラウザはNET::ERR_CERT_AUTHORITY_INVALIDを表示します。対処: Let's Encrypt、ZeroSSL、Sectigo、DigiCertなどの認められたCAから証明書を取得します。
- 不完全なチェーン: サーバーがintermediatesなしでleaf証明書のみを送信しています。モバイルブラウザや古いデバイスで失敗します。対処: Webサーバーでフルチェーン(fullchain.pem)を構成します。
- 弱い鍵または弱い署名: RSA 2048 bit未満またはSHA-1署名は許可されません。対処: RSA 2048+またはECDSA P-256で再発行します。
- Mixed ContentとHSTSの落とし穴: 以前に有効なHSTSヘッダーを送信していて証明書が期限切れになると、訪問者は警告を回避できません。緊急対応: 証明書を更新し、緊急時はHSTSのmax-ageを下げます。
Let's Encrypt 対 商用証明書
Let's EncryptはISRGが運営する無料の自動化CAです。証明書は技術的に商用DV証明書と同一で、すべての現代ブラウザで信頼されます。
有料証明書が意味を持つのはどんなときか? 実は特殊なケースだけです:
- Extended Validation (EV): かつては緑のアドレスバーを表示しましたが、今ではほぼ視認できません。法的に求められる銀行や取引プラットフォームのみで意味があります。
- DNSチャレンジ不要のワイルドカード: Let's EncryptはDNS-01チャレンジでのみワイルドカードをサポートします。DNSへのAPIアクセスがない場合はZeroSSL PremiumやSectigoが選択肢です。
- 保証と保険: 商用CAは誤発行時の保険金額を提供します。実務ではほぼ関係ありませんが、一部のコンプライアンス要件で求められます。
KernelHost WebhostingとcPanelには無料のLet's Encrypt統合がデフォルトで含まれています。証明書はAutoSSLによって60日ごとに自動更新され、何もしなくて構いません。ドメインがKernelHost DNSにあれば、DNSチャレンジ経由のワイルドカード証明書も可能です。
TLS 1.2 対 TLS 1.3
TLS 1.2は2008年から標準で、TLS 1.3はRFC 8446として2018年に公開され、2020年以降広く展開されています。古いバージョン(SSL 3.0、TLS 1.0、TLS 1.1)は安全ではないため、サーバー構成で無効化すべきです。
TLS 1.3が改善する点:
- より速いハンドシェイク: 2-RTTから1-RTTへ。再開時はオプションで0-RTT。TLS中心のページで体感が速くなります。
- 整理されたcipherセット: 許可されたAEAD cipher suiteは5つのみ。RSA鍵交換は廃止、常にforward secrecy。
- 暗号化されたハンドシェイク: サーバー証明書自体も暗号化して転送されます。ESNI/ECHを使えばSNIまでプライベートになります。
- 後方互換: サーバーはTLS 1.2と1.3を並行して提供できます。ブラウザは自動で最高の共通バージョンをネゴシエートします。
証明書の期限切れは何を意味するか
SSL証明書の期限切れは具体的に: ブラウザはフルスクリーン警告を表示してサイトをブロックします。多くの場合訪問者は警告を回避できず、特にHSTSヘッダーが有効なときはなおさらです。
運営者への影響:
- Googleでのランキング低下(HTTPSはランキング要因で、信頼関連シグナルが評価されます)。
- メールサーバー(STARTTLS付きMX/SMTP)が受信接続を拒否し、メールがバウンスまたは遅延配信されます。
- 証明書ピンニングを行うAPIクライアントとモバイルアプリが破綻し、アプリ更新が必要になる場合があります。
HSTS、CAA、OCSP Stapling
有効な証明書は始まりに過ぎません。3つの追加メカニズムでTLSセキュリティをベストプラクティスレベルに引き上げます:
- HSTS(HTTP Strict Transport Security): ブラウザにこれ以降HTTPSのみを使うよう強制するヘッダーです。推奨: max-age=63072000; includeSubDomains; preload(2年、すべてのサブドメイン、preloadリスト)。max-age実行中はミス構成を巻き戻せないため、有効化は慎重に。
- CAA(Certification Authority Authorization): あなたのドメインに対して証明書を発行できるCAを定めるDNSレコードです。例: 'kernelhost.com. CAA 0 issue "letsencrypt.org"' で他CAによる誤発行を防ぎます。
- OCSP Stapling: Webサーバー自身がCAの失効ステータスレスポンスを同梱して配信し、ブラウザが個別にCAへ問い合わせる必要をなくします。訪問者にとって速く、CAインフラの負担も軽くなります。Apache: SSLUseStapling On、nginx: ssl_stapling on。
プライバシー
KernelHost SSL Checkerは当社のFrankfurtノード内で完結し、サードパーティへの呼び出しはありません:
- 入力を外部API(SSL Labs、Hardenize、Cryptomonなど)に転送しません。
- 標準のリクエストロギング(Webサーバーログ、14日保持)を超えてチェック対象ドメインを保存しません。
- Anti-SSRFフィルターが、プライベートIP範囲、loopback、link-localへのリクエストをブロックします。
- 悪用防止のためのIP単位レートリミット。送信時にhCaptchaを任意で挿入できます。