この記事では、OpenVPNでX.509デジタル証明書に基づいて
JaCarta PKIスマートカードとUSBトークンの2要素認証を構成する方法について説明します。
このソリューションでは、ユーザーのパスワード認証を拒否できます。 このソリューションの実装は、システムのセキュリティに対する人的要因の影響を根本的に削減します。
OpenVPNについて
OpenVPNは、コンピューター間の暗号化されたポイントツーポイントまたはサーバー/クライアントチャネルを作成するための無料のオープンソース仮想プライベートネットワーク(VPN)テクノロジーです。 設定を変更することなく、NATファイアウォールの背後にあるコンピューター間の接続を確立できます。
JaCarta PKIについて
JaCarta PKIは、企業システムのユーザーの厳格な認証、ソフトウェア暗号化情報保護のキーコンテナの安全な保管、およびデジタル証明書用に
Aladdin R. D.によって製造されたPKIトークンのラインです。
チューニングの進行状況
デモスタンドの説明
- サーバー-Microsoft Windows Server 2012、OpenVPN。
- クライアント-ドライバー「Single Client JaCarta」バージョン2.9以降、 OpenVPNがインストールされたMicrosoft Windows 8.1 。
このマニュアルでは、クライアントとサーバー間のVPN接続の最も単純なシナリオを構成する方法について説明します。 複雑なネットワークの構築は、このマニュアルでは考慮されていません。JaCartaシングルクライアントソフトウェアは、JaCartaおよびeTokenトークンとスマートカードのすべてのモデルで動作するように設計されたソフトウェアパッケージです。
サーバーのセットアップ
デジタル証明書を使用して
OpenVPNで認証できるようにするには、クライアントとサーバーに信頼できる認証局が発行したデジタル証明書が必要です。 クライアントはサーバー証明書を信頼する必要があり、サーバーはクライアント証明書を信頼する必要があります。
サーバーまたはクライアント証明書の信頼性が侵害されると、VPN接続を確立できなくなります。OpenVPN自体が提供するツールを使用してキーと証明書を発行するプロセスを検討してください。
OpenVPNインストールディレクトリにあるeasy-rsaディレクトリに移動し、init-config.batを実行します。 作業の結果として、vars.batファイルが作成されますが、環境に合わせて編集する必要があります。
set HOME =%ProgramFiles%\ OpenVPN \ easy-rsa-作業ディレクトリを設定します
set KEY_CONFIG = openssl-1.0.0.cnf-設定ファイルOpensslを設定します
set KEY_DIR = keys-キーを保存するディレクトリを設定します
KEY_SIZE = 1024の設定-キーのサイズを設定します
KEY_COUNTRY = USを設定-国を指定
KEY_PROVINCE = CAを設定-スコープを指定
KEY_CITY = SanFranciscoを設定-都市を指定します
KEY_ORG = OpenVPNの設定-組織の名前を指定します
KEY_EMAIL=mail@host.domainを設定-電子メールを入力
KEY_CN = changemeの設定-共通名(共通名)を指定します
KEY_NAME = changemeを設定-名前を指定
KEY_OU = changemeの設定-組織単位を指定します
以下のセクションはそのままにしておきます。
set PKCS11_MODULE_PATH = changeme-pkcs#11モジュールへのパス
PKCS11_PIN = 1234-PINコードをスマートカードに設定します
TLSのキーを生成する必要があります。 空のファイルを作成して、インデックスとシリアル番号を保存します。 これを行うには、実行します(1回実行):
認証局キーを生成します(1回実行)。 実行:
ダイアログで、目的の認証局の名前を指定します。
Diffie-Hellmanキーファイルを生成します(サーバーのみ、1回実行)。
実行:
秘密鍵とサーバー証明書を生成します。
実行:
- vars.bat;
- build-key-server.bat <マシン名>。
その結果、マシン(サーバー)の名前を持つキーと証明書が生成されます。
次に、クライアントマシンのキーと証明書を作成する必要があります。 クライアントマシンごとにPKCS#12ファイルを生成します。
これを行うには、次を実行します。
- vars.bat;
- build-key-pkcs12.bat <マシン名>。
その結果、クライアントマシンの名前を持つPKCS#12ファイルが生成されます。 これは、マシンごとに生成する必要があります。
サーバー構成ファイルを編集し、正しいネットワーク設定を設定します。
キーと証明書ファイルへのパスを正しく指定する必要があることに注意してください。 構成ファイルからの抜粋:
#任意のX509キー管理システムを使用できます。
#OpenVPNはPKCS#12形式のキーファイルも使用できます
#(manページの「pkcs12」ディレクティブを参照)。
ca C:\ PATH_CERTIFICATE_CERTIFICATE_CENTER_WAY \ ca.crt
証明書C:\ Server_CERTIFICATE_WAY_SERVER \ server.crt
キーC:\ SERVER_KEY_path_SERVER \ server.key
#Diffie hellmanパラメーター。
#独自に生成:
#openssl dhparam -out dh2048.pem 2048
dh C:\ PUT_K_DIFPHI-HELLMAN_FILES \ dh1024.pem
クライアント設定
Aladdin R.D.の公式ウェブサイトからJaCartaシングルクライアントとJaCarta SecurLogonソフトウェアをインストールします。
「JaCarta SecurLogon」は、Microsoft Windowsに入り、JaCartaトークンを使用してネットワークリソースにアクセスするときに、通常のパスワードから2要素認証への簡単かつ迅速な移行を提供するソフトウェアソリューションです。
[PKI]タブを選択して、トークンを初期化します。
キーを初期化すると、キー上のすべてのデータが削除されます。 他のシステムのキーや証明書など、必要な情報がキーに含まれている場合は、キーを初期化しないでください。JaCartaシングルクライアントPCを使用して、クライアント用に以前に生成されたPKCS#12ファイルをトークンにインポートします。 キーと証明書はトークンに表示され、「JaCarta Single Client」ウィンドウで確認できます。 コンピューターの個人用ストレージにあるトークンから証明書をインストールします。
個人証明書のsha1フィンガープリントをコピーします。これは、さらに構成するために必要になります。
サーバーのセットアップ中に取得した認証局証明書も必要になります。 信頼されたルート認証局のリポジトリに証明書をインストールし、ローカルに保存します。
クライアント構成ファイルを編集し、正しいネットワーク設定を設定します。
cryptoapicertフィールドで、ユーザー証明書のフィンガープリントを指定します。
caフィールドで、認証局証明書へのパスを指定します。
構成ファイルからの抜粋:
#SSL / TLSパラメーター。
#詳細については、サーバー構成ファイルを参照
#説明。 使用するのが最善です
#別の.crt / .keyファイルペア
#各クライアント用。 単一のca
#ファイルはすべてのクライアントに使用できます。
cryptoapicert "THUMB:81 0d d6 b7 .... クライアント証明書の印刷」
ca C:\センター証明書の認証方法\ ca.crt
確認する
サーバーとクライアントでOpenVPNを起動します。
構成が正しい場合、トークンのPINコードの入力を求められ、VPN接続が正常に確立されます。
キーと証明書を取得する他の方法
キーを生成して証明書を発行する最も一般的な方法は、たとえば、Microsoft証明機関に基づいた証明機関を使用することです。 OpenVPNを構成するには、キーを生成して証明書を発行するこの方法も適しています。
サーバーの場合、認証局でキーとサーバー認証証明書を生成し、PKCS#12ファイルにエクスポートします。
OpenVPNのサーバー側の設定で、証明書とキーの代わりに、pkcs12を指定する必要があります。
ca C:\ PATH_CERTIFICATE_CERTIFICATE_CENTER_WAY \ ca.crt
pkcs12 C:\ PATH_SERVER_WAY_SERVER \ server.p12
ルートCA証明書は認証局証明書である必要があります。
トークンのキーと証明書を発行するためのテンプレートのセットアップについては、「JaCarta Single Client」および「JaCarta SecurLogon」の手順を参照してください。 クライアントの場合、証明機関でキーとクライアント認証証明書を生成します。 この場合、pkcs#12ファイルをトークンにインポートする必要はありません。 クライアント部分の他の設定も同様に実行されます。