Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ローカル環境でSSL/TLS証明書を発行して警告表示を出さないようにするアレコレ #ツナギメオ...

Avatar for akase244 akase244
February 26, 2026

ローカル環境でSSL/TLS証明書を発行して警告表示を出さないようにするアレコレ #ツナギメオフライン.5

ツナギメオフライン ベンキョウカイ #5で発表したスライドです。

Avatar for akase244

akase244

February 26, 2026
Tweet

More Decks by akase244

Other Decks in Technology

Transcript

  1. 本日持ち帰ってもらいたいキーワード February 26, 2026. ツナギメオフライン ベンキョウカイ #5 • CSR(証明書署名要求) •

    ルート証明書(ルートCA証明書、CA証明書) • 中間CA証明書 • サーバー証明書(SSL/TLS証明書はこれを指すことが多い) • クライアント証明書 • 自己署名証明書 • 認証局(CA) • CRL(証明書失効リスト) • openssl コマンド • mkcert コマンド
  2. 本日持ち帰ってもらいたいキーワード February 26, 2026. ツナギメオフライン ベンキョウカイ #5 • CSR(証明書署名要求) •

    ルート証明書(ルートCA証明書、CA証明書) • 中間CA証明書 • サーバー証明書(SSL/TLS証明書はこれを指すことが多い) • クライアント証明書 • 自己署名証明書 • 認証局(CA) • CRL(証明書失効リスト) • openssl コマンド • mkcert コマンド
  3. HTTP / HTTPS で動作が異なる機能の開発には注意が必要 February 26, 2026. ツナギメオフライン ベンキョウカイ #5

    • Mixed Content • Cookie の Secure 属性 • SameSite Cookie • HSTS • CORS • Service Worker • WebSocket
  4. Linux(Ubuntu)の場合は以下のコマンドで登録 February 26, 2026. ツナギメオフライン ベンキョウカイ #5 $ sudo cp

    【ルート証明書】 /usr/local/share/ca-certificates/ $ sudo update-ca-certificates $ ls -l /etc/ssl/certs/ 合計 636 lrwxrwxrwx 1 root root 23 2月 11 00:13 002c0b4f.0 -> GlobalSign_Root_R46.pem ・ ・ ・
  5. 例えばNginxの場合 February 26, 2026. ツナギメオフライン ベンキョウカイ #5 server { listen

    443 ssl; ・ ・ ssl_certificate /etc/nginx/certs/snakeoil.crt; ssl_certificate_key /etc/nginx/certs/snakeoil.key; ・ ・
  6. 例えばApacheの場合 February 26, 2026. ツナギメオフライン ベンキョウカイ #5 <VirtualHost *:443> DocumentRoot

    "/usr/local/apache2/htdocs" SSLEngine on SSLCertificateFile "/usr/local/apache2/conf/certs/snakeoil.crt" SSLCertificateKeyFile "/usr/local/apache2/conf/certs/snakeoil.key" ・ ・
  7. これが February 26, 2026. ツナギメオフライン ベンキョウカイ #5 $ curl -I

    https://localhost/ curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
  8. こうなります February 26, 2026. ツナギメオフライン ベンキョウカイ #5 $ curl -I

    https://localhost/ HTTP/1.1 200 OK Server: nginx/1.29.5 Date: Wed, 18 Feb 2026 18:26:06 GMT Content-Type: text/html Content-Length: 26 Last-Modified: Wed, 18 Feb 2026 16:26:52 GMT Connection: keep-alive ETag: "6995e84c-1a" Accept-Ranges: bytes
  9. 証明書を発行する方法は様々あります February 26, 2026. ツナギメオフライン ベンキョウカイ #5 • mkcert •

    openssl • caddy • certstrap (square) • CFSSL (Cloudflare) • Easy-RSA (OpenVPN) • minica • Step CLI (Smallstep) • Traefik (Traefik Labs) • Vault (HashiCorp)
  10. 正直、mkcertの使い方さえおさえておけば良いのでは February 26, 2026. ツナギメオフライン ベンキョウカイ #5 • mkcert :

    簡易なコマンドで扱いやすい。最近流行ってるっぽい? • openssl : basicConstraints=CA:TRUE であれば手数は少なめ • caddy: 手軽なリバプロ。Caddyfileの書式を覚える必要あり • certstrap (square): オプションの指定方法はopensslと大差なし • CFSSL (Cloudflare): オプションをJSON形式で指定可能 • Easy-RSA (OpenVPN): オプションの指定方法はopensslと大差なし • minica: オプションにドメインを指定するだけで簡単 • Step CLI (Smallstep): オプションの指定方法はopensslと大差なし • Traefik (Traefik Labs): コンテナ環境向けのリバプロ。 • Vault (HashiCorp): オプションの指定方法はopensslと大差なし
  11. ローカル環境を外部公開する方法の例 February 26, 2026. ツナギメオフライン ベンキョウカイ #5 • ngrok •

    Cloudflare Tunnel • localtunnel • localhost.run • Tailscale • PageKite • Telebit • zrok • Expose
  12. ローカル環境でHTTPS接続を行うには February 26, 2026. ツナギメオフライン ベンキョウカイ #5 • ルート証明書とサーバー証明書を発行する •

    ルート証明書をブラウザとローカルPCに登録する • サーバー証明書をwebサーバー、アプリケーションサーバーに配置する • 証明書を発行するコマンドとしては mkcert がオススメ • PHPのビルトインサーバーのように単独でTLS終端が行えない簡易的なweb サーバーの場合は Caddy をリバースプロキシとして利用すると扱いやすい