ssl-inspector について
ssl-inspectorは、TLS証明書とドメインのセキュリティ設定を調べるMCPサーバー兼コマンドラインツールです。証明書、プロトコル、暗号スイート、HSTSを検査し、複数ドメインのスキャンにも対応します。
主な機能
- 01証明書の有効性と詳細を確認
- 02TLSプロトコルと暗号スイートを検査
- 03HSTS設定を確認
- 04複数ドメインを並列スキャン
- 05証明書の有効期限を確認
活用シーン
- 01ドメインのTLS設定を確認
- 02複数ドメインの証明書を点検
- 03期限が近い証明書を監視
- 04デプロイ後にTLSチェックを実行
MCP 対応
TLSの総合検査、複数ドメインの一括スキャン、証明書の有効期限確認、詳細情報の取得に使えるツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| host | string | はい | 検査するドメイン名または IP(例:example.com) |
| port | number | いいえ | 接続するポート(デフォルト:443) |
| checkHsts | boolean | いいえ | HTTP HEAD で HSTS ヘッダーも確認します(デフォルト:true) |
詳細
@guardbee/mcp-ssl-inspector
🇬🇧 英語 | 🇹🇷 トルコ語 | 🇨🇳 中国語 | 🇯🇵 日本語 | 🇰🇷 韓国語 | 🇧🇷 ポルトガル語 | 🇪🇸 スペイン語 | 🇩🇪 ドイツ語
任意のドメインの TLS 証明書、暗号スイート、プロトコル設定を検査する MCP サーバーです。Node.js に組み込まれている tls モジュールを使用するため、外部依存関係はありません。
テレメトリーはデフォルトでオフです。
GUARDBEE_TELEMETRY=1を設定すると、サーバー、ツール、成功状況、所要時間、ファイルパスなどの短いパラメーター値が送信されます。長い文字列や、content、token、passwordなどのフィールドはプレースホルダーに置き換えられます。詳細は@guardbee/mcp-telemetryをご覧ください。
機能
- 証明書の検査 — 有効性、有効期限までの日数、SHA-256 フィンガープリント、SAN、発行者チェーン
- プロトコルの確認 — TLS 1.0/1.1 の非推奨警告、SSLv2/v3 の重大な警告
- 暗号の分析 — NULL、EXPORT、RC4、DES、3DES、匿名暗号を検出
- HSTS の確認 —
Strict-Transport-Securityヘッダー、max-age、includeSubdomains - 一括スキャン — N 個のドメインを並列スキャン
- 証明書の有効期限の監視 — 期限が近い証明書を 🚨/⚠️/✅ アイコンで表示
- 12 件の単体テスト — ネットワーク接続不要の純粋なロジックテスト
クイックスタート
npm install -g @guardbee/mcp-ssl-inspector
claude_desktop_config.json に追加します:
{
"mcpServers": {
"guardbee-ssl-inspector": {
"command": "npx",
"args": ["-y", "@guardbee/mcp-ssl-inspector"]
}
}
}
MCP ツール
| ツール | 説明 |
|---|---|
inspect_ssl | 単一ドメインの TLS を完全に検査します(証明書+暗号+プロトコル+HSTS) |
inspect_ssl_bulk | 複数のドメインを並列に検査します |
check_cert_expiry | N 個のドメインの証明書の有効期限を確認します |
get_cert_info | ドメインの証明書情報を詳しく表示します(フィンガープリント、SAN、チェーン、シリアル番号) |
使用例
Claude には次のように質問できます:
「example.com の SSL 証明書は有効ですか?」
「次のドメインの証明書はいつ期限切れになりますか:example.com、api.example.com、shop.example.com」
「example.com は脆弱な暗号スイートを使用していますか?」
出力例
┌─ example.com:443
│ Protocol : TLSv1.3
│ Cipher : TLS_AES_256_GCM_SHA384 (256 bit)
│ Chain : depth=2 valid=yes
│ Cert CN : example.com
│ Validity : Mar 15 2024 → Jun 13 2024 (expires in 45 days)
│ SANs : example.com, www.example.com
│ Issuer : Let's Encrypt
│ SHA-256 : AA:BB:CC:DD:...
│ HSTS : enabled (max-age=31536000, includeSubdomains)
│ ✅ No security issues found
セキュリティ上の検出事項
| 検出事項 | 重大度 | 説明 |
|---|---|---|
CERT_EXPIRED | 🔴 Critical | 証明書の有効期限が切れています |
CERT_EXPIRY_CRITICAL | 🔴 Critical | 残り 7 日未満です |
CERT_EXPIRY_SOON | 🟠 High | 残り 21 日未満です(ACME クライアントは 30 日前に更新します。更新に失敗しています) |
CERT_EXPIRY_WARN | 🟡 Medium | 残り 30 日未満です |
HOSTNAME_MISMATCH | 🔴 Critical | この証明書はホストに対して有効ではありません |
CERT_REVOKED | 🔴 Critical | 証明書は失効しています |
CERT_SELF_SIGNED | 🟠 High | 自己署名証明書です |
CERT_CHAIN_INCOMPLETE | 🟠 High | サーバーが中間証明書を送信していません |
CERT_CHAIN_INVALID | 🟠 High | その他の証明書チェーン検証エラーです |
WEAK_KEY | 🟠 High / 🔴 Critical | 2048 ビット未満の RSA キー(1024 ビット未満は Critical)、256 ビット未満の EC キーです |
WEAK_SIGNATURE | 🟠 High | リーフ証明書または中間証明書が SHA-1 または MD5 で署名されています |
CERT_NO_SAN | 🟡 Medium | Subject Alternative Name がありません |
DEPRECATED_PROTOCOL | 🟠 High | サーバーが TLS 1.0 または 1.1 を引き続き受け入れます(プローブ) |
OBSOLETE_PROTOCOL | 🔴 Critical | SSLv2 または SSLv3 です |
WEAK_CIPHER | 🔴 Critical / 🟠 High | NULL/EXPORT/RC4(Critical)または 3DES(High)の暗号スイートを受け入れます(プローブ) |
WEAK_DH | 🟠 High / 🔴 Critical | 2048 ビット未満の Diffie-Hellman グループ(1024 ビット未満は Critical)です(プローブ) |
NO_FORWARD_SECRECY | 🟡 Medium | RSA 鍵交換暗号を受け入れます(プローブ) |
NO_HSTS | 🟡 Medium | HSTS ヘッダーが見つかりません |
HSTS_SHORT_MAX_AGE | 🔵 Low | max-age が 15552000s 未満です |
NO_TLS13 | 🔵 Low | TLS 1.3 がサポートされていません(プローブ) |
NO_OCSP_STAPLING | 🔵 Low | OCSP stapling 応答がありません |
NO_CAA | 🔵 Low | ドメインまたは親ドメインに CAA DNS レコードがありません |
プローブ。 デフォルトのハンドシェイクでは、双方が共有する最適なプロトコルと暗号が選択されるため、TLS 1.0 や RSA 鍵交換も受け入れるサーバーが問題ないように見えることがあります。そのため、inspect_ssl と CLI は追加でいくつかのハンドシェイクを実行し、それぞれテスト対象の項目(TLS 1.0、TLS 1.1、TLS 1.3、RSA 鍵交換、DHE、脆弱な暗号ファミリー)のみを提示します。ランタイムの OpenSSL 自体が提示できない脆弱なファミリー(Node 22 のビルドには 3DES/RC4/EXPORT がありません)は、合格ではなく未テストとして表示されます。--no-probes / probes: false でこれらをスキップできます。inspect_ssl_bulk では、明示的に指定しない限り無効になっています。
CLI — CI/CD 統合
MCP サーバーモードに加えて、CLI として直接使用することもできます。
# Full TLS inspection for a single domain
npx @guardbee/mcp-ssl-inspector inspect example.com
# Multiple domains
npx @guardbee/mcp-ssl-inspector inspect example.com api.example.com shop.example.com
# Custom port
npx @guardbee/mcp-ssl-inspector inspect example.com:8443
# Certificate expiry check
npx @guardbee/mcp-ssl-inspector expiry example.com api.example.com
# Fail only on critical
npx @guardbee/mcp-ssl-inspector inspect example.com --fail-on=critical
# JSON output
npx @guardbee/mcp-ssl-inspector inspect example.com --format=json
終了コード: 0 = 問題なし · 1 = しきい値を超える検出事項/期限切れの証明書 · 2 = エラー
guardbee.yml による設定
CLI フラグを保存するには、プロジェクトのルートに guardbee.yml を作成します。CLI フラグは常にファイルの設定より優先されます。
ssl-inspector:
fail-on: high # critical | high | medium | low
port: 443
hosts: # used when no domain is given on the CLI
- example.com
- api.example.com
- shop.example.com
サンプルファイルについては、guardbee.example.yml をご覧ください。
GitHub Actions — デプロイ後チェック
name: SSL Check
on:
workflow_run:
workflows: ["Deploy"]
types: [completed]
jobs:
ssl-check:
runs-on: ubuntu-latest
steps:
- name: Inspect SSL certificate
run: npx @guardbee/mcp-ssl-inspector inspect ${{ vars.DOMAIN }} --fail-on=high
- name: Check cert expiry (warn if < 30 days)
run: npx @guardbee/mcp-ssl-inspector expiry ${{ vars.DOMAIN }}
定期的な有効期限モニタリング
name: Cert Expiry Monitor
on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 09:00
jobs:
expiry:
runs-on: ubuntu-latest
steps:
- name: Check certificate expiry dates
run: |
npx @guardbee/mcp-ssl-inspector expiry \
example.com \
api.example.com \
shop.example.com \
--format=json
GitLab CI
ssl-inspect:
image: node:20
script:
- npx @guardbee/mcp-ssl-inspector inspect $DOMAIN --fail-on=high
environment:
name: production
only:
- main
開発
npm install
npm test # 12 unit tests
npm run build # TypeScript compile
ライセンス
MIT — GuardBee
フィードバック
質問、アイデア、または誤検知がありましたら、GitHub Discussionsでスレッドを立てるか、issue を作成してください。GuardBee が役に立った場合は、リポジトリに ⭐ を付けていただくと、ほかの人にも見つけてもらいやすくなります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。