LoginSignup
4
4

More than 5 years have passed since last update.

Docker内のWebサイトにHTTPSのみで通信したい

Last updated at Posted at 2015-09-22

■環境

  • CentOS 6.6
  • nginx 最新
  • Docker 最新(1.7だったかな?)

■やりたかったこと

  • 社内チャットシステムの構築
    • 本筋ではないので深くは触れないが、Rocket.ChatMattermostで悩んだ挙句、Mattermostを採用している
  • HTTPSでの通信
    • まぁnginxとか前段に立てればラクショーだよね
    • 社内システムなのでオレオレ証明書でモウマンタイ
  • どうせならDocker使ってみたい
    • ナウい(死語)ものには触れてみたい

■問題の概要

こちらの記事を参考に「Rocket.Chat」を立てようとしていた。
Dockerのインストール、HTTPでのアクセスまでは問題なくOK!
あとは、HTTPS のみ でしか構築の許可が出なかったため、オレオレ証明書作ってnginxを通してアクセスさせた。アクセスすることもOK!

しかし

HTTPもアクセスできないようにしたいので、「よっし、Linuxだしiptablesだな!」と、22/443以外を閉じてみる。だけど、もともと初期構築時に開けたHTTP通信(上記参考記事でいう55555ポート)でのアクセスが塞がれない。。アクセスできるんですけどーwwとなった。

■解決した方法

自信がないので、詳しい方、アドバイスいただけると助かります。。。。

どうやらNATテーブルにDNATの設定が 勝手に 自動的に追加されるようなのでそこを塞ぐ。

#現在の設定を確認
iptables -t nat -L

#DNATに流れる設定を削除して、443からのみ流れるように変更する
iptables -t nat -D PREROUTING -p all -m addrtype --dst-type LOCAL -j DOCKER
iptables -t nat -A PREROUTING -p tcp --dport 443 -s localhost --sport 55555 -j DOCKER

参考記事

これで https://example.com/ にアクセスすると無事に接続可能、かつ、
http://example.com:55555/ にアクセスしても 404 になることを確認!
いやーDocker難しい。
Linuxの知識もあんまりない中での挑戦だったのでかなり苦労しました :sweat_smile:

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4