Willcom03
外出先から自宅ネットワークに繋ぎたい、ということでOpenVPNをインストールしてみようと思う。
サーバ側の設定 †
まずはサーバとなるPCの設定。手持ちのWindowsXPマシンをサーバにすることにします。Professionalエディションなので大丈夫でしょう。たぶん。
ルーティング方式とブリッジ方式を選ぶことになるのですが、ルーティング方式だと「ブロードキャストのような無駄なパケットが転送されない」そうなので、Willcom03からアクセスすることを考え、こちらを採用することにしました。
- ゼロ円でできるインターネットVPN
- http://www.atmarkit.co.jp/flinux/special/openvpn/openvpna.html
- OpenVPN 2.0 HOWTO 日本語訳
- http://freescitech.net/2/ovpn2_howto_ja.html
- OpenVPNをインストールしよう
- http://www.remus.dti.ne.jp/~grn/openvpn.html
先人に学びながら設定していくことにします。
インストール †
http://openvpn.net/index.php/open-source/downloads.html
- ここから2011年4月16日現在、最新安定版と思しき(openvpn-2.1.4-install.exe)をダウンロード。
- ダウンロードしたファイルを実行する。
ありがちな「同意しますか?」系の質問に答えながらインストールを進めます。
- インストールするコンポーネント選択は良く分からないので安心の全部チェック。あ、でもソースコードは要らないかも。
- 次にインストール先を指定してインストール開始。
- 途中「TAP-Win32 Adapter」というハードウェアをインストールしてよいかダイアログが出てくる。必要なファイルらしいので許可。(一瞬フリーズするのであせった)
- でラストスパート、READMEなど表示して完了する。
設定をする †
- OpenSSLの設定を行うため、インストール配下(C:\Program Files\OpenVPN)に"ca"というフォルダを作成する。
- http://www.openssl.org/source/ より、最新ソースよりopenssl.cnfというファイルを取り出し、先ほどのフォルダにおく。
今回は openssl-1.0.0d.tar.gz を使用。/appsにある。Windowsだと拡張子から短縮ダイヤルファイル扱いされてるので注意。
- opensll.cnfファイルのうち以下の設定を変更します。
設定項目 | 値 |
---|
certs | $dir |
crl_dir | $dir\crl |
database | $dir\index.txt |
new_certs_dir | $dir |
certificate | $dir\my-ca.crt |
serial | $dir\serial |
crl | $dir\crl.pem |
private_key | $dir\my-ca.key |
RANDFILE | $dir\.rand |
- で、こうして用意した設定ファイルを見てもらうように環境変数を設定します。
システムのプロパティ→詳細設定→環境変数で。今回はサーバ起動が目的なのでシステム環境変数に新しいシステム変数を追加することにします。
環境変数 | 値 |
---|
OPENSSL_CONF | c:\Program Files\OpenVPN\ca |
- 新しく「serial」「index.txt」というファイルを2つ作成。
ファイル | 中身 |
---|
serial | 01とだけ記載、改行不要 |
index.txt | 中身は空 |
- 証明書を作成します
- コマンドプロンプトを起動してカレントを"c:\Program Files\OpenVPN\ca"へ。
- 下記コマンドを入力しCA自身の証明書を作成します。
openssl req -nodes -new -x509 -keyout my-ca.key -out my-ca.crt -days 3650 -config openssl.cnf
- いくつか質問されるので回答してきます。
Q | A |
---|
Country Name (2 letter code) [AU]: | JP |
State or Province Name (full name) [Some-State]: | tokyo |
Locality Name (eg, city) []: | nerima |
Organization Name (eg, company) [Internet Widgits Pty Ltd]: | bibouroku |
Organizational Unit Name (eg, section) []: | CA |
Common Name (eg, YOUR name) []: | komina |
Email Address []: | |
- 回答するとそのままプログラムが終了し、フォルダに「my-ca.key」「my-ca.crt」というファイルが作られます。
前者が秘密鍵、後者がCAの証明書となります。
- 下記コマンドを入力し、証明書を発行します。
openssl req -nodes -new -keyout server.key -out server.csr -config openssl.cnf
- 同じようにいくつか質問されるので回答してきます。
Q | A |
---|
Country Name (2 letter code) [AU]: | JP |
Country Name (2 letter code) [AU]: | JP |
State or Province Name (full name) [Some-State]: | tokyo |
Locality Name (eg, city) []: | nerima |
Organization Name (eg, company) [Internet Widgits Pty Ltd]: | bibouroku |
Organizational Unit Name (eg, section) []: | CA |
Common Name (eg, YOUR name) []: | komina |
Email Address []: | |
A challenge password []: | (秘密) |
An optional company name []: | |
- 回答が終わると終了し、フォルダに「server.key」「server.csr」というファイルが作られます。
- OpenVPNサーバのローカル証明書に署名をします。
openssl ca -out server.crt -in server.csr -config openssl.cnf
- ここでトラブル発生。「Error opening CA private key ./demoCA/my-ca.key」とか出て中断してしまった。
- 「./demoCA/my-ca.key」って何ぞや。
- openssl.cnfを検索してみると、"dir"という項目に"./demoCA"を設定しているのが原因ぽい。
- 早速、openssl.cnfを修正。
dir = .
- エラー解消されるも、さらにトラブル発生。
668:error:02001002:system library:fopen:No such file or directory:.\crypto\bio\bss_file.c:126:fopen('./index.txt.attr','rb')
668:error:2006D080:BIO routines:BIO_new_file:no such file:.\crypto\bio\bss_file.c:129:
668:error:0E078072:configuration file routines:DEF_LOAD:no such file:.\crypto\conf\conf_def.c:197:
- "index.txt.attr"が開けないのが問題なのか?"index.txt"じゃだめなのか?疑問に思いつつ、"index.txt"を"index.txt.attr"に名前を変更。
- 今度は"index.txt"が開けないと出た。そうか、2つ同時になきゃだめなのか。
ということで、"index.txt"と"index.txt.attr"を用意したところ無事エラー解消。
- しかしまた一つエラーが。
2736:error:0E06D06C:configuration file routines:NCONF_get_string:no value:.\crypto\conf\conf_lib.c:329:group= name=unique_subject
- a