LAN 内のホストで証明書は取れる?
LAN 内のホストで、条件つきだけど証明書を取得できる。ただ、LAN 内のホストが、
- 外から一切見えない完全な閉域
- プライベート IP だけ
.localや.lanみたいなローカルな名前だけ
ではそのまま取得できない。証明書発行時に「その名前や IP を本当に管理しているのはあなたか?」と検証する仕組みだから。Let’s Encrypt の場合、Internal Name や Reserved IP Address を含む証明書は発行しないとなっている。
まぁ、以下のようになると考えてよいだろう。
- 社内専用の名前やプライベート IP アドレスでは不可
例:server.local/intra.lan/192.168.1.10 - 公開ドメイン名なら可
例:host-a.internal.example.com
最近は一部の IP アドレス証明書にも対応が進んでいるが、一般に到達可能な IP 向けの話。
実際に取れるパターンは主に2つ。
- 公開DNS名を使う方法
たとえばhost-a.internal.example.comというホスト名があり、その名前の所有を証明する。
この検証にはHTTP-01、DNS-01、TLS-ALPN-01などがある。特にDNS-01は Web サーバ自体を外部公開しなくてもよいので、社内サーバで使う場合にはかなり相性が良い。 - リバースプロキシや一時公開を使う方法
外部からhttp://intra.example.jp/.well-known/acme-challenge/...に到達できるようにすればHTTP-01でも取得できる。
ただし、LAN だけで閉じたいなら、これは少し扱いが面倒。
LAN 上のサーバを HTTPS 化する現実的な選択肢
公開ドメインを持っているなら
intra.example.jpのような正規の公開ドメイン名を使う- 社内 DNS ではその名前を社内 IP へ向ける
- 証明書取得だけは
DNS-01で行う
「外に見せない運用」と「ブラウザ警告を出さない公開証明書」を両立したいなら、公開ドメイン + DNS-01 が本命。
B. 完全閉域で外部ドメインも使いたくないなら
- 自前 CA(社内認証局)
- もしくは
mkcertのようなローカル向け証明書
ただし、各 PC やスマホに社内 CA 証明書を信頼設定する必要がある。
ざっくり判断表
- 社内だけ・ブラウザ警告なし・運用も現実的
→ 公開ドメインを使って Let’s Encrypt(DNS-01) - 完全閉域・外と一切つながない
→ 社内CA / mkcert - IPアドレス直打ちでアクセスしたい
→ 私設IPでは基本だめ。公開CAでは難しい/不可と考えるべきナリ。 ([Let’s Encrypt][1])
注意点として、Let’s Encrypt の証明書は 90 日有効で、自動更新前提。なので、社内サーバで使うなら更新自動化まで含めて設計する。DNS サーバをリモートでコントロールできる仕組みがあるようなので、それを使うようだ。
社内LANの HTTPS 化では、実務上は次のどちらかにほぼ収束する。
- 社内向けFQDNを public domain で切って DNS-01
- 完全閉域なら社内 CA


コメント