2017年5月21日日曜日

Edgerouterに証明書導入

今日は家庭内で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で回復できます。

0 件のコメント:

コメントを投稿