証明書とAPIで見る“稼働の見える化” — 公共サービスのTLS寿命と運用ガバナンスをコードで検証する

IT政策の提案
証明書とAPIで見る“稼働の見える化” — 公共サービスのTLS寿命と運用ガバナンスをコードで検証する

どうも〜おかむーです!今日はちょっとインフラ寄りの話をしますよ〜

  • 3行要約
- 自治体サイトやAPIのTLS証明書・認証周りがサービス可用性に与える影響を技術的に検証するよ

- opensslや簡単なPythonで実測して、証明書切れ・SHA-1廃止などの運用リスクを見える化する!

- 改善策は自動化(ACME/Certbot)、OpenAPI公開、監視とサービスメタデータの公開だよ

結論

自治体・政府の公開データやAPIの「中身」だけでなく、TLS/認証・運用情報を機械可読で公開して運用自動化するのが最優先。エンジニア的に言うと、データが取れるかどうかはまずネットワークと証明書の健全性で決まるんですよね。

レポート本文

背景と問題意識

これ見てくださいよ:高槻市の案内に「SHA-1証明書を廃止します」との告知がありました(例: https://www2.wagmap.jp/takatsuki/Portal)。証明書更新やプロトコルの廃止はユーザー影響が出るのに、自治体によっては周知が不十分、あるいはモバイル互換性の確認が甘いことがあるんです。

さらに、政府側ではe-GovのAPIカタログ(https://www.e-gov.go.jp/digital-government/api)やデジタル庁の事例集(https://www.digital.go.jp)を整備しているものの、実運用のTLSライフサイクルやAPIメタデータ(OpenAPIなど)が常に最新とは限らない。

要するに、データが『出るかどうか』以前に『接続できるか』が第一関門ということです。

実測で見る:TLS診断の簡単コード例

エンジニア的に言うと、まずはコマンド一発で現状を拾うべき。

# TLS証明書の有効期限確認

openssl s_client -connect example.gov.jp:443 -servername example.gov.jp </dev/null 2>/dev/null | openssl x509 -noout -dates

HTTPヘッダでAPI存在確認

curl -I https://api.example.lg.jp/endpoint

Pythonで自動チェックしてSlack通知する簡易例:

import ssl, socket, datetime

host='api.example.lg.jp'

crt = ssl.get_server_certificate((host,443))

省略: pem->x509変換して有効期限を得る

これで証明書の残日数が閾値切ったらアラート出す運用を作れるんですよ。

発見した典型的な課題

  • 手作業更新で証明書が期限切れになりサービス停止
  • SHA-1廃止対応の遅れで古い端末が接続不能(高槻事例に類似)
  • APIカタログにTLS/認証情報(証明書の指紋、サポートするTLSバージョン、CORSポリシー)が欠落
  • OpenAPIやステータスマニフェストを公開していないため、利用者が互換性を自動検出できない

技術的改善提案(実装レベル)

  • 証明書自動化:ACME (Let's Encrypt) + Certbot/ACME clientで自動更新。クラウド環境はManaged Certを利用。
  • 公開メタデータ:/.well-known/service-manifest.jsonに以下を含める
  • - endpoints (URL, TLS fingerprint, supported TLS versions)

    - OpenAPI URL

    - SLA/稼働時間、Contact

  • 監視パイプライン:GitHub Actions / CIで週次のTLSチェックとAPIスキーマ合致テストを回す
  • 互換性テスト:主要ブラウザ・モバイルでのTLS接続テストを自動化(BrowserStack等)
  • 運用プレイブック:証明書更新失敗時のフォールバック(別ドメインやCDNでの一時運用)
  • コード例(GitHub Actionsの疑似ワークフロー):

    # .github/workflows/tls-check.yml
    

    on: schedule: - cron: '0 0 0'

    jobs:

    tls-check:

    runs-on: ubuntu-latest

    steps:

    - uses: actions/checkout@v3

    - run: python tools/check_tls.py --hosts hosts.yaml

    政策面のつなぎ方

    総務省・デジタル庁の標準化方針(例: https://www.digital.go.jp/policies/local_governments, https://www.soumu.go.jp/)と合わせて「運用メタデータ公開」を自治体標準に入れれば、移行や監査も楽になる。要するに、基幹系の標準化と同じく“運用情報の標準化”が必要です。

    まとめ

    • TLS/認証とAPIのメタデータ公開は、公共データの可用性・信頼性に直結する
    • 簡単なツール(openssl, curl, Python)で現状を自動診断して、CIで回すだけで事故は大幅に減る
    • 政策として「運用メタデータ(証明書指紋・OpenAPI・SLA)」を公開する規定を入れよう!

    おかむーから一言

    テクノロジーで社会をアップデートするって言うなら、まずサービスが落ちないことを保証しよう!運用の“見える化”と自動化は、小さな投資で大きな信頼を返してくれますよ〜

    シェアする