EC2 なうぶんつで openvpn の設定

爺さん時刻に起床してパッチ云々に区切りをつけてこちらに着手。
とりあえず証明書サンプルをコピィらしい。

$ sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/.

で、vars を云々して

$ diff vars vars.ORG 
64,68c64,68
< export KEY_COUNTRY="JP"
< export KEY_PROVINCE="Okinawa"
< export KEY_CITY="Naha"
< export KEY_ORG="hoge"
< export KEY_EMAIL="fuga@hoge"
---
> export KEY_COUNTRY="US"
> export KEY_PROVINCE="CA"
> export KEY_CITY="SanFrancisco"
> export KEY_ORG="Fort-Funston"
> export KEY_EMAIL="me@myhost.mydomain"
$

これを source したらなんか言われた。

$ sudo su -
# cd /etc/openvpn/easy-rsa/2.0
# . ./vars
**************************************************************
  No /etc/openvpn/easy-rsa/2.0/openssl.cnf file could be found
  Further invocations will fail
**************************************************************
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
#

これ、そもそも openssl が入っているのか、と。

# dpkg --get-selections|grep openssl
openssl                                         install
python-openssl                                  install
#

を、入っとるな。ええとバージョンは 1.0.0-4ubuntu3 とか出とるな。以下なカンジなので

# ls openssl-*
openssl-0.9.6.cnf  
openssl-0.9.8.cnf  
openssl-1.0.0.cnf  
openssl-1.0.0.cnf-old-copy
#

とりあえずそのまま使ってみます。

# cp openssl-1.0.0.cnf openssl.cnf
# . ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
# ./clean-all
# ./build-ca

全部デフォ Enter です。で、一旦 root な shell から抜けて云々とありますね。

# exit
$ cd /usr/share/doc/openvpn/examples/sample-config-files/
$ sudo cp server.conf.gz /etc/openvpn/
$ cd /etc/openvpn/
$ sudo gunzip server.conf.gz
$ sudo vi server.conf

あ、サーバ証明書作ってないやorz

$ sudo su -
# cd /etc/openvpn/easy-rsa/2.0
# ./build-key-server hoge

ええと、最初からでした。. ./vars から。これで keys の中に色々できました。

ちょい時間がアレなので、ここから後は向こうで云々します。再開後のナニはここに追記の方向です。

再開

ええと、上の手続きで名前はちょっと違いますが以下なカンジのファイルが keys 配下に作成されてる状態になってました。

# pwd
/etc/openvpn/easy-rsa/2.0/keys
# ls
01.pem
ca.crt
ca.key
server.crt
server.csr
server.key
index.txt
index.txt.attr
index.txt.old
serial
serial.old
#

で、/etc/openvpn 配下に解凍した server.conf を以下に修正、とのことなんですが

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key # This file should be kept secret
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
;user nobody	←コメントをはずす
;group nobody	←group nogroup に修正

dh1024.pem が無い。と思ったら server.conf に以下な記述が。

# Diffie hellman parameters.
# Generate your own with:
#   openssl dhparam -out dh1024.pem 1024
# Substitute 2048 for 1024 if you are using
# 2048 bit keys.
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

openssl コマンドで無事に dh1024.pem が生成されてます。

$ sudo openvpn server.conf
Wed Nov  7 00:42:58 2012 OpenVPN 2.2.1 x86_64-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110424-2 (2.2RC2)] built on Mar 30 2012
Wed Nov  7 00:42:58 2012 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Wed Nov  7 00:42:58 2012 Diffie-Hellman initialized with 1024 bit key
Wed Nov  7 00:42:58 2012 TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Wed Nov  7 00:42:58 2012 Socket Buffers: R=[229376->131072] S=[229376->131072]
Wed Nov  7 00:42:58 2012 ROUTE default_gateway=10.249.38.1
Wed Nov  7 00:42:58 2012 TUN/TAP device tun0 opened
Wed Nov  7 00:42:58 2012 TUN/TAP TX queue length set to 100
Wed Nov  7 00:42:58 2012 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed Nov  7 00:42:58 2012 /sbin/ifconfig tun0 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
Wed Nov  7 00:42:58 2012 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
Wed Nov  7 00:42:58 2012 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Wed Nov  7 00:42:58 2012 GID set to nogroup
Wed Nov  7 00:42:58 2012 UID set to nobody
Wed Nov  7 00:42:58 2012 UDPv4 link local (bound): [undef]
Wed Nov  7 00:42:58 2012 UDPv4 link remote: [undef]
Wed Nov  7 00:42:58 2012 MULTI: multi_init called, r=256 v=256
Wed Nov  7 00:42:58 2012 IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
Wed Nov  7 00:42:58 2012 IFCONFIG POOL LIST
Wed Nov  7 00:42:58 2012 Initialization Sequence Completed

とりあえず正常動作している、ということで良いのかな。ちなみにルータとしては使わないのでこれだけで良いはず。本当かな。

次はクライアント側

鍵を作って云々、で良いのかどうか。
とりあえず sudo su - して

# pwd
/etc/openvpn/easy-rsa/2.0
# . ./vars
# ./build-key-pass yamanetoshi
Generating a 1024 bit RSA private key
...................................++++++
........++++++
writing new private key to 'yamanetoshi.key'
Enter PEM pass phrase:
140723698427552:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:You must type in 4 to 1024 characters
140723698427552:error:0906406D:PEM routines:PEM_def_callback:problems getting password:pem_lib.c:111:
140723698427552:error:0907E06F:PEM routines:DO_PK8PKEY:read key:pem_pk8.c:130:
#

とりあえず pass phrase は空でナニ。て失敗しとるなorz
pass phrase 入れて後の質問にもてきとーに答えて .crt および .csr および .key が作成されておるのを確認。端末側には

  • クライアントの .crt
  • ca.crt
  • クライアントの .key

を持ってくれば良いのかな。つうか端末側に openvpn が導入されているのかどうか。ええと、client.conf が /usr/share/doc/openvpn/examples/sample-config-files/ 配下にありますね。これをコピーして、作成した鍵の類を /etc/openvpn 配下に置けば良いらしい。
で、動作試験中なんですが、クライアント側で tun0 ができない。おかしーな、と言いつつ、プロトコルを tcp にしたら接続できた模様 (tun0 がクライアント側で作成された)。
とりあえず aws なナニで http なポートを止めて、サーバ側で apache か何かを動かして確認してみたいと思います。

jenkins 入れてみる

動作確認ついで、にはあまりに沢山なナニが。とは言え、流石 AWS と言える風な download の早さですね。あ、80 は開いてるけど 8080 は閉じてるから丁度良いのか。
サーバ側の tun なアドレス向けの 8080 をブラウザでタタいたら jenkins なナニが出てきましたな。これで良いのかどうなのか。とりあえずこれに Gerrit なソレを導入して云々してみることに。
とりあえず AWS な EC2 を使ってプライベートクラウドちっくなソレを云々できること、は分かったのか。