#topicpath *relayd + DeleGate + acme-client = SSLVPN [#f6ff4c62] RIGHT:EBUG 第60回会合 ~ 2017年 2月11日、万代市民会館 ~ 川俣吉広、kaw@on.rim.or.jp **発端 [#ab0755fb] 本件の例では、以下の構成でSSL-VPNの運用を行っていた。 INTERNET || INTRANET LAN https://gw.foobar.com/bee/* || http://sv.inner.foobar.com/quux/baz/* || [OpenBSD 5.8] [Web Broweser]---HTTPS--->[DeleGate ]---HTTP--->[Web Server] /[ 9.9.13] / || Basic || Auth. || このGWではDeleGateを用いて、以下のことをやっている; -(A) SSL/TLSの終端 (証明書はDeleGate内蔵の自己署名されたもの) -(B) ユーザの認証 (リバースプロキシのBasic認証) -(C) URLのリダイレクト(書換え) #!/bin/sh function dgcmd { /usr/fuguita/sbin/delegated \ DGROOT=/home/delegated \ OWNER=delegated/delegated \ LOGDIR='log/[date+archived/%Y%m]' \ "$@" } umask 0027 case X"$1" in Xstart) dgcmd \ -Pfoobar.com:443 \ <-(A) SERVER=https \ <-(A) FCL=sslway \ <-(A) REMITTABLE="http,https" \ <-許可するプロトコル RELIABLE="*.jp,*.gfngfn.net" \ <-許可するアクセス元 REACHABLE="inner.foobar.com,google.com" \ <-許可するアクセス先 AUTH=proxy:pauth \ <-(B) AUTHORIZER='-list{guest:welcome772,kaw:op2p29eje,ouquser:pvs/neue288}' \ <-(B) MOUNT='/proj1/* http://gwe1.inner.foobar.com/bd/proj1/*' \ <-(C) MOUNT='/proj2/* http://iwf.inner.foobar.com/wf/ntp8x16/*' \ <-(C) MOUNT='/* https://google.com/?q=*' ;; <-(C) Xstop) dgcmd -Pfoobar.com:443 -Fkill ;; Xrestart) $0 stop; sleep 15; $0 start;; *) echo "$0 start|stop|restart" >&2 ;; esac このサーバを更新し、OpenBSD 5.8 -> OpenBSD 6.0 に変更したところ、DeleGateがlibssl, libcryptoをロードしなくなった。~ 外部よりアクセスすると、ブラウザに このサイトにアクセスできません foobar.com により途中で接続が切断されました。 と表示され(Google Chromeの場合)、接続できない。また、DeleGateのログでは、起動時に --ERROR: can't link the SSL/Crypto library. ブラウザ接続時、DeleGateのログに [OpenBSD/6.0] not OOB: BrokenSocket[25] <= _-select.c91 #### というエラーが記録される。 代替策として、SSL/TLSの終端を行う部分を他のソフトウェアで置き換えることとした。~ 候補としては、Squid, Nginx, Varnishなどのリバースプロキシがあるが、今回はOpenBSDネイティブのrelaydを使用した。 併せて、SSL/TLSのサーバ証明書を自己書名のものから、Let's Encryptから発行されたものに変更した。 **relaydとは [#b1d506bc] OpenBSDネイティブなL7ゲートウェイ。これを使用してロードバランサを構築可能。 **acme-clientについて [#pd5f684f] **実装例 [#s0949dd2] ---- #topicpath