Edgerouterに証明書導入

2017年5月21日日曜日

ルーター

t f B! P L
今日は家庭内でhttpsの証明書を取る話です。

httpsの接続先がオレオレ証明書だと、接続する度に信頼するかと聞かれ、パスワードのオートコンプリーションも効かないし、色々面倒です。

かといって公式な認証を取ると3万円程度必要になります。無理無理無理w

そこで、今回はLet's Encryptを使って無料で公式な認証を取る話です。認証を取ると、URLが緑になって、パスワードのコンプリーションも効いて便利です。


前提として必要なのは、以下の通り。
  • Edgerouter 1.8.5以降
  • 独自ドメイン (1年目は99円や299円から)
  • ポート80を一時的に公開できること
独自ドメインは、1年目は割引で、2年目からは4000円超なんてのもあるので気をつけましょう。2年目以降が1200円程度なら妥当だと思います。ドメインを作ったら、IPはDynamic DNSを利用して、自分のドメインのDNSからは、そのDDNSをCNAME(ALIASみたいな物)で指すようにするといいでしょう。

その先の手順は以下の通りです。
  1. 外部の名前で、内部から接続できるようにする
  2. 外部から接続しacme-tinyを使って認証を作成する
まず、外部の名前、今回は`router.jam.blue`としてますが、これで内部からルーターのweb UIに接続できるよう設定します。その手順は以下の通り。
  1. router.jam.blueでIPを引けるようにする
  2. web UIをrouter.jam.blueに公開する
まず手元のPCで、nslookupしてみます。

$ nslookup router.jam.blue
Server:         127.0.1.1
Address:        127.0.1.1#53

Non-authoritative answer:
router.jam.blue canonical name = jam7.ddns.net.
Name:   jam7.ddns.net
Address: 180.145.72.84

こう出力されれば問題なし。127.0.1.1や192.168.1.1などのプライベートアドレスが出てくると問題あり。

対応方法は、まずホスト名に適当な物、router.jam.blue以外を設定します。これは、debian系のedgerouterでは、ホスト名を設定すると、それを127.0.1.1で登録するので、それを回避するためです。


こんな感じに設定します。同時に、WizardのDNS host namesも見て、router.jam.blueを全て消します。

これで、WAN側のアドレスだけになるはず。それが出来たら、Config treeから、service gui listen-addressを0.0.0.0にして、web UIを公開します。ここでは、httpdの設定を変えているだけで、これ以外にfirewallでブロックされているので、実際には外部からは接続できません。


この例では、certificates導入済みなので、ca-fileやcert-fileがデフォルトとは異なってますが、その下のlisten-addressを修正して、Previewして設定してください。

ここまでできたら、内部のPCから、router.jam.blueでweb UIが開けるはずです。

次は、「外部から接続しacme-tinyを使って認証を作成」なんですが、これは簡単で、 https://github.com/mgbowen/letsencrypt-edgemax をインストールして実行するだけです。

インストール時のgitの導入などでディスクスペースが足らない場合は、バックアップされてるシステムイメージを削除しましょう。

admin@router:~$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
ubi0_0                  220080    203208     12036  94% /root.dev
aufs                    220080    203208     12036  94% /
devtmpfs                127364         0    127364   0% /dev
tmpfs                   127488       144    127344   0% /run
tmpfs                   127488       144    127344   0% /run
tmpfs                   127488        80    127408   0% /var/log
tmpfs                   127488         8    127480   0% /tmp
none                    127488      1364    126124   1% /opt/vyatta/config
unionfs                 127488         8    127480   0% /opt/vyatta/config/tmp/new_config_4ukbi6sshf7ul2arvu74vggnd4scdcue
admin@router:~$ delete system image
The system currently has the following image(s) installed:

v1.9.1.1.4977602.170427.0113   (running image) (default boot)
v1.9.0.4901118.160804.1131

You are about to delete image [v1.9.0.4901118.160804.1131]
Are you sure you want to delete ? (Yes/No) [Yes]: yes
Removing old image... Done
admin@router:~$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
ubi0_0                  220080    126412     88828  59% /root.dev
aufs                    220080    126412     88828  59% /
devtmpfs                127364         0    127364   0% /dev
tmpfs                   127488       144    127344   0% /run
tmpfs                   127488       144    127344   0% /run
tmpfs                   127488        80    127408   0% /var/log
tmpfs                   127488         8    127480   0% /tmp
none                    127488      1364    126124   1% /opt/vyatta/config
unionfs                 127488         8    127480   0% /opt/vyatta/config/tmp/new_config_4ukbi6sshf7ul2arvu74vggnd4scdcue

後は、手順通り。sudo ./install.shするだけです。エラーが発生した場合でも、certificatesを導入してしまうため、web UIが見れなくなるかもしれません。そういう時は、sudo ./uninstall.shで回復できます。

ラベル

AndroidTV (1) chromebook (2) DIY (4) docker (1) git (4) Ingress (4) llvm (3) MacBook (1) MVNO (1) narou (1) PS4 (2) QNAPNAS (9) SIMD (9) SmartBand (8) Ubuntu (9) VAIO (1) Windows (2) wsl (2) wsl2 (1) Xperia (20) トルネ (3) プログラム (26) ルーター (18) 音楽 (6) 家事 (2) 自炊 (2) 電子書籍 (2) 洋食 (4)

フォロワー

QooQ