OpenVPN&セキュリティ情報
2011-11-02
OpenVPN設定 - 認証局の設置
OpenVPNはPKI(Public Key Infrastructure:公開鍵基盤)に基づいたSSL VPNです。PKIにおいては鍵(Key)と証明書(Certification)の組み合わせでセキュリティを保つことになりますが、その鍵と証明書を作成、管理するために必要になるのが認証局(Certificate Authority:CAとも略される)で、いわばOpenVPNの認証(ユーザー管理)の中枢となる部分です。OpenVPNの設定は、まずこの認証局を設置することから始めます。
CA(認証局)の役割
CAの役割を簡単にまとめると、「安全な通信を行うために必要な鍵と証明書を発行・管理すること」となります。Webサイトで使用されるSSL証明書は外部の認証局(ベリサインなど)を利用するのが一般的ですが、OpenVPNの場合は通常、独自に認証局を設置します。
認証局を設置すると聞くとちょっと大掛かりな感じがしますが、必要なファイルはOpenVPNのインストール時に同時にインストールされており、すぐに使い始めることができます。では、具体的な手順を説明しましょう。
PKI利用のための準備
1. easy-rsaディレクトリのコピー
OpenVPNをRPMでインストールすると、「easy-rsa」というPKIのためのツール群が同時にインストールされています。このファイルは /usr/share/doc/openvpn-2.2.1/easy-rsa に配置されていますが、/etc/openvpn にコピーしておきましょう。[root@localhost ~]# cp -fr /usr/share/doc/openvpn-2.2.1/easy-rsa /etc/openvpn/ [root@localhost ~]# cd /etc/openvpn/easy-rsa [root@localhost easy-rsa]# ls 1.0 2.0 Windowseasy-rsaディレクトリには1.0と2.0という2つのディレクトリがありますが、2.0を使用します。今後はこのディレクトリ(/etc/openvpn/easy-rsa/2.0)内で作業します。
2. デフォルト設定ファイルの書き換え
今後の各手順で使用する設定ファイルを書き換えておきます(書き換えなくても動作するので、テスト環境などであれば必須ではありません)。この設定ファイルは、証明書や鍵を作成するときのデフォルト値を設定するためのもので、 /etc/openvpn/easy-rsa/2.0/vars というファイルになります。書き換えるのは主にファイル末尾にある各exportの値ですが、今回は最低限の部分だけ書き換えましょう。すべて英語表記になる点に注意してください。
export KEY_COUNTRY="JP" # 国名コードです。 export KEY_PROVINCE="Tokyo" # 都道府県名を指定します。 export KEY_CITY="Shinagawa" # 都市名です。 export KEY_ORG="Example company" # 組織名です。社名や団体名など。 export KEY_EMAIL="admin@example.com" # CAの管理者のメールアドレスです。これ以降の7行は今回ひとまず使用しないので、コメントアウトしておきましょう。
#export KEY_CN=changeme #export KEY_NAME=changeme #export KEY_OU=changeme #export PKCS11_MODULE_PATH=changeme #export PKCS11_PIN=1234 #export PKCS11_MODULE_PATH= #export PKCS11_PIN=1234
3. openssl.cnfファイルのコピー
/etc/openvpn/easy-rsa/2.0/openssl-1.0.0.cnf をOpenSSLの設定ファイルとしてそのまま使用するためにopenssl.cnfにコピーします。[root@localhost 2.0]# cp openssl-1.0.0.cnf openssl.cnf
4. 設定値の反映とデータのクリア
[root@localhost 2.0]# . ./vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys [root@localhost 2.0]# ./clean-allclean-allは既存の鍵や証明書などをクリアするためのコマンドです。初回の準備のために実行しますが、運用中の環境で実行しないようにしてください。
5. DHパラメータの生成
鍵の交換に使用するDHパラメータを生成します。build-dhコマンドを実行するだけです。環境によっては数分かかります。
[root@localhost 2.0]# ./build-dh Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time ..........................................................+......................................++*++*++*
CA(認証局)の設置
CAの設置
build-caコマンドを実行します。後半で国名などを聞かれますが、このデフォルト値は先程の vars ファイルで設定したものなので、変える必要がなければそのままENTERキーを押すだけです。[root@localhost 2.0]# ./build-ca Generating a 1024 bit RSA private key ..++++++ .................................................................++++++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [JP]: State or Province Name (full name) [Tokyo]: Locality Name (eg, city) [Shinagawa]: Organization Name (eg, company) [Example company]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [Example company CA]: Name []: Email Address [admin@example.com]:これで keys ディレクトリに ca.crt、ca.key が生成されます。これでCAが設置できました。
この2つのファイルは重要なファイルなので、バックアップをとっておくことをお勧めします。CAの鍵(ca.key)は流出してしまうとセキュリティ上致命的な問題になりますので、保管には十分注意してください。
次回はサーバー用、クライアント用の鍵と証明書を作成しましょう。続きはこちらです。
Profile
- 山崎 太郎 (Taro Yamazaki)
- プラムシステムズ株式会社所属。 主にVPN(OpenVPN)やセキュリティ関連技術、Webアプリケーションを手がけています。
Page Views
Popular Posts
-
「VPNっていろいろあるけど、OpenVPNのメリットって何?」 という疑問は多くの方が持たれますよね。この点は公式サイトなどにもいろいろ書かれているのですが、実際に使ってきたユーザー側としてメリットと思う部分をまとめてみました。
-
現在ダウンロードできるOpenVPNでは、今まで認証局の構築で使用していたeasy-rsaが含まれなくなっています。 OpenVPN.netのダウンロードページ にも Note that easy-rsa is no longer bundled with OpenVPN...
-
Jan Just Keijser氏の記事「 Optimizing performance on gigabit networks 」については こちら でも概要を取り上げましたが、記事全体にいろいろなヒントが含まれていますので、全文の日本語訳を掲載しています。意訳している部分も...
-
OpenVPNでは、接続してきたクライアントのVPNアドレスは動的に割り振られます(その際に割り振られる際のアドレス範囲はOpenVPNサーバー側設定ファイルに基づきます)。特定のVPNクライアントに特定のVPNアドレスを割り振りたい場合、OpenVPNでは以下の2つの方法で設定...
-
では、いよいよiPhone構成ユーティリティでVoDの設定をしてみましょう。あ、 前の記事 での準備はきちんとやっておいてくださいね!
-
前回 は2つのワンタイムパスワードの生成方法について取り上げました。今回はいよいよ実際の生成アルゴリズムを取り上げましょう。TOTPをベースに説明します(ただ、前回も解説したように、基本的なロジックはTOTPとHOTPで同じです)。 参考としてpythonのコードも併記してみま...
-
現時点においてはマニュアルやHowToにも記載されていない(ChangeLogにちょっとだけ出てきます)あまり知られていない機能なのですが、「設定ファイルで鍵ファイルや証明書ファイルのパスを記載する」という通常の方法とは別に、「鍵ファイルや証明書ファイル内のデータをそのまま設定フ...
-
OpenVPNはLinuxをはじめとした幅広いプラットフォームで動作実績があるのが特徴の一つです。 今回は、最近の電子工作ブームでも話題のシングルボードPC 3機種をOpenVPNサーバーとしてセットアップし、OpenVPNのVPNパフォーマンスを測定してみましょう。
-
前回 はワンタイムパスワードの基本的な仕組みについて説明しました。サーバー側とクライアント側で、それぞれ共通のルールに基づいてパスワードを生成させる必要があることを取り上げましたが、今回は OATH が規定しているその生成ルールについて具体的に説明します。 ワンタ...
-
OpenVPNを使用している方ならよくご存知だと思いますが、通常OpenVPNでは証明書認証を使用します。証明書認証はID/パスワード認証に比較すると安全性が高いとされます(もちろん、秘密鍵の管理方法に大きく依存します)が、証明書認証の概念を理解しにくいユーザーが秘密鍵や証明...
© yamata::memo 2013 . Powered by Bootstrap , WebLyb