Top / Network / VPN / OpenVPNのTIPS集

OpenVPNクライアントで証明書要求を作って、サーバで署名する

クライアント側で秘密鍵と証明書要求のキーペアを作成し、サーバ側に証明書要求を送信し、サーバで署名してクライアント証明書を作成する方法です。

まずOpenVPNクライアントをインストールします。

http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe をダウンロードし、インストールします。

秘密鍵と証明書要求を作成

次に、OpenVPNクライアント付属のツールで秘密鍵と証明書要求のキーペアを作成します。片方の秘密鍵はクライアント側で大切に保管します。もう一方の証明書要求(CSR)は署名前のクライアント証明書みたいなもので、それをサーバに送信し、サーバで署名をしてもらって署名済みのクライアント証明書として返信してもらいます。

以下、OpenVPN付属ツールをコマンドラインから実行します。

> cd C:\Program Files\OpenVPN\easy-rsa\
> init-config.bat

このコマンドで、vars.bat というファイルができました。次にこのファイルを編集します。ファイルの最下行に証明書要求のためのデフォルト値が書いてあるので、たとえば

set KEY_COUNTRY=JP
set KEY_PROVINCE=Tokyo
set KEY_CITY=Bunkyo
set KEY_ORG=Masatom in
set KEY_EMAIL=hogehoge@hogehoge.com

などと編集しておきます。

引き続きコマンドラインから以下の通り実行します。

> vars.bat
> mkdir %KEY_DIR%
> openssl req -days 3650 -new 
  -keyout %KEY_DIR%\hogehoge.key
  -out %KEY_DIR%\hogehoge.csr -config %KEY_CONFIG%  <-実際は一行

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
....++++++
.............++++++
writing new private key to 'keys\hogehoge.key'
Enter PEM pass phrase:   <-秘密鍵を活性化するためのパスワードを入力
Verifying - Enter PEM pass phrase:
-----
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) [Bunkyo]: <-先のデフォルト値
Organization Name (eg, company) [Masatom in]: <-先のデフォルト値
Organizational Unit Name (eg, section) []: <-空でもいい
Common Name (eg, your name or your server's hostname) []:hogehoge <-ファイル名と同じにする
Email Address [hogehoge@hogehoge.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <-空でいい
An optional company name []: <-空でいい

>

これで

hogehoge.key <-秘密鍵
hogehoge.csr <-証明書要求

が作成されました。また、秘密鍵にはパスワードが設定されました。

あとはhogehoge.csrをサーバ側に送信して、署名してもらいます。

署名する

サーバ側で署名を行います。署名はCA局としてCSRに署名するの通りにやればOKですね。

証明書を無効にする

./vars
./revoke-full hogehoge <-ユーザ名

で該当の証明書を無効にします。でserver.confに

crl-verify /etc/hogehogehoge/crl.pem

とCRLの場所を指定しておけばOKです。

ちなみにrevokeするときには/etc/openvpn/easy-rsa/2.0/にcrmが必要ぽいですね。クライアントに返却したら不要になると思ってたけど、、、。

関連リンク


この記事は

選択肢 投票
おもしろかった 1  
そうでもない 0  

Top / Network / VPN / OpenVPNのTIPS集

現在のアクセス:5689


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS