OpenVPN を使って仮想LAN接続してみる で、OpenVPNを使った仮想プライベートネットワークを構築してみました。
その際に、簡単にOpenVPNの認証の仕組みについて、解説が長くなってしまうので図だけを掲載してました。
今回は、その図の簡単な解説を加えておきます。
Virtual Private Networkの略で、日本語では仮想プライベートネットワークと訳されています。
OpenVPN の認証の仕組み
OpenVPN の認証の仕組みの基本は、SSL 認証 になります。SSL 認証の技術を用いてサーバー・クライアント双方の認証手続きをするのが非常に特徴的です。
さらに加えて TLS-AUTH HMAC 共有鍵 を用いて すべてのSSL/TLSハンドシェイクパケットにHMAC署名によるパケットの整合性をチェックです。
つまり、2重、3重にチェックを行う点で、かなりセキュリティ強化を実現しています。
さて、先に書いた通り OpenVPN の認証の仕組みを理解する上で SSL 認証の理解は不可欠です。まずは、SSL 認証について簡単に解説してみます。
SSL 認証の仕組み
認証の手続きで、もっとも簡単な手続きは、ユーザID、パスワードという組み合わせだと思います。
これは、非常に手軽なのですが、ユーザID、パスワードさえわかれば、なりすましが簡単にできる点で非常にセキュリティの面で弱いという側面を持ちます。
そこで考えられたのが暗号化、認証、改竄検出の機能を提供するSSL(Secure Sockets Layer)です。
単純にSSLと言った場合、厳密には、TLS(Transport Layer Security)のことを指すことが多いです。
そもそも、TLSがSSLをもとに考えられたことが所以で、一般的に SSL/TLS などと呼ばれることも多いです。
いずれもプロトコルを指し、いわゆる手順です。
ここでは、SSLで通したいと思います。
以下は、そのSSLの認証手順をWebサーバーのSSL通信手順( いわゆる https ) を 簡単に図にした様子です。これをもとに簡単に解説してみたいと思います。
- 前準備として、認証局からサーバー証明書を取得する必要があります。
SSLを行うには、秘密鍵、証明書(公開鍵を含む)の2つが必要になります。
証明書(SSLサーバー証明書)は、認証局が発行します。その際に必要なものが、CSRです。 CSRは、サーバー簡単に作成することができます。また、このCSRを作成する際に、秘密鍵も作成されます。 ここで作成した秘密鍵は、非常に大事なものですから、厳重に管理しておく必要があります。
認証局へ、ここで作成したCSRを送付してサーバー証明書を受理します。
一般的には、ショップ系など信用第一のウェブサイトには、パブリック認証局からのサーバー証明書が必要になるでしょう。 ただ、このサーバー証明書が非常に高価なので、単純にSSL機能を使ってセキュリティアップを図りたい場合などは、プライベート認証局を自らのサーバー起こして利用することが多いです。認証局とは、
CA(Certificate Authority)とも呼ばれ、正確には、公開鍵証明書認証局と呼ばれています。
つまり、サーバー証明書が「正しいですよ」と認定してくれる認証機関であり、実際にはウェブ上のサーバーとなります。 パブリック認証局(いわゆる公に認められている認証局)で有名なのがベリサイン などです。 逆に認証局の機能を自前で行うことをプライベート認証局と言います。
CSRとは、
Certificate Signing Request略で、署名要求(書(ファイル))と呼ばれているもので、実際には電子情報になります。 単純に読めるようなテキスト情報ではありませんが、ここには、公開鍵、サーバーに基本情報などが含まれています。 その情報から認証局は、CSRに含まている公開鍵に署名したものを埋め込んだサーバー証明書(認証局の情報も含まている)を発行します。
証明書を得たら、サーバーに組み込みます。サーバーへの組み込み方は本筋ではないので、ここでの解説は省略します。
ここまでWebサーバーの準備ができたら、以降、いよいよSSLの認証手順になります。
- ユーザがWebサーバーへSSL接続(https)要求がきた場合、Webサーバーはサーバー証明書を返信します。
ユーザ側で、
受信したサーバー証明書から、その証明書に署名されている認証局(CA)のルート証明書(CA証明書)を取り出します。 そのルート証明書(CA証明書)が、Webブラウザに組み込まれている(信頼できるサイト一覧の中)CA証明書と一致するか確認します。 (これで、サーバー証明書の信頼性をチェックします)
- 認証局(CA)のルート証明書からCA公開鍵を取得します。
ユーザ側で、
先に取り出した認証局(CA)のルート証明書(CA証明書)から認証局の(CA)公開鍵を取り出します。
- CA公開鍵とサーバー証明書からサーバー公開鍵を複合化します。
ユーザ側で、
先に取り出した認証局(CA)の(CA)公開鍵と受信しているサーバー証明書からサーバー公開鍵を複合化し取り出します。
- 共通鍵作成のためのランダム数値を作成し、サーバー公開鍵によって暗号化しWebサーバーへ通知します。
ユーザ側で、
暗号化した通信を行うための一時的な鍵を作成するためのランダムな数値を作成し、Webサーバーへ通知します。もちろん、この時の通知の際もサーバー公開鍵によって暗号されています。
- ランダム数値からサーバー用の共通鍵を作成します。
ユーザ側で、
先のランダム数値からWebサーバーとの暗号化した通信を行うための一時的な鍵を作成します。
- ランダム数値からサーバー用の共通鍵を作成します。
Webサーバー側で、
受信した暗号化されたランダム数値をサーバーの秘密鍵で復元し、ユーザとの暗号化した通信を行うための一時的な鍵を作成します。
これで通信のための共通的な鍵が作成されたので、以降、暗号化通信が行われます。
いわゆるここまでが、SSL認証の手順になります。
OpenVPN認証の仕組み
OpenVPN の認証の仕組みの基本は、SSL 認証 になります。SSL 認証の技術を用いてサーバー・クライアント双方の認証手続きをするのが非常に特徴的です。
さらに加えて TLS-AUTH HMAC 共有鍵 を用いて すべてのSSL/TLSハンドシェイクパケットにHMAC署名によるパケットの整合性をチェックです。
つまり、2重、3重にチェックを行う点で、かなりセキュリティ強化を実現しています。
さて、先に書いた通り OpenVPN の認証の仕組みを理解する上で SSL 認証の理解は不可欠です。まずは、SSL 認証について簡単に解説してみます。
先にも書きましたが、OpenVPNでは、
SSL/TLS の認証手続きをサーバー、クライアント双方で行います。
さらに加えて TLS-AUTH HMAC 共有鍵 を用いて すべてのSSL/TLSハンドシェイクパケットにHMAC署名によるパケットの整合性をチェックです。
OpenVPN を使って仮想LAN接続してみる でも掲載した図は、以下の図です。
先のSSL認証手順との違いは、
この図からもおわかりのとおり、認証局は自前のもの(プライベート認証局)を使っている点です。
既にプライベート認証局にて、サーバー証明書を発行し、サーバーに組み込んだ状態からの図になっています。
あらかじめ準備していないといけないもの は、以下のとおりです。
クライアント | サーバー |
---|---|
|
|
OpenVPN を使って仮想LAN接続してみる では、ここで必要な各ファイルは、すべて同じサーバーで作成しています。
まず、サーバー認証、接続してきたクライアントの認証を行い、お互いに認証できたら、暗号化通信が開始されます。
その際、ハンドシェイク通信(常に細かい通信を行い相手の存在を確認するもの)を行うわけですが、設定されていれば、
そのハンドシェイクにTLS認証のための署名を行ってさらにセキュアな通信を行います。
SSL認証がしっかり理解できていれば、OpenVPNの認証は、それを2重、3重に組み合わせてセキュアにしたものですから、理解できるものと思います。
WindowsでOpenVPNへのクライアント接続を自動化する
ここまで、以下のようにOpenVPNおよびSambaに関して記事を書いてきました。
Samba を使ってファイル共有してみる
Op ...
Postfix で Submissionポート(サブミッション・ポート)& SMTP-AUTH(認証)& STARTTLS or SSL/TLS を使ってみる
前回までの関連記事
Debian(Ubuntu)で postfix を使ってみる
postfixを使って単純に全メールを1つのメールサーバーへ転 ...
OpenVPN を使って仮想LAN接続してみる
Samba を使ってファイル共有してみる では、Sambaを使ってファイル、ディレクトリの共有を行ってみました。
ただ、Sambaをそのままインタ ...
apache でSSLを使ってみた(クライアント証明書失効編)
apache でSSLを使ってみた(クライアント認証編) では、SSL接続のクライアント証明書を使った認証までを解説しました。
今回は、先のクライ ...
OpenVPN で不要になったクライアント証明書を無効にし、該クライアントからの接続を拒否する
今回は、OpenVPN を使って仮想LAN接続してみる の補足です。
SSL 認証 の仕組みと OpenVPN の認証の仕組み の認証方法から ...
新着記事 :
コメントを投稿 :