web-dev-qa-db-ja.com

パスワードなしのOpenVPNクライアントキーの使用の長所と短所

組織用にOpenVPNサーバーをセットアップしています。クライアント側のキーが機能するさまざまな方法について読んでいます。私はまだ、これらのクライアントキーとアカウント認証の背後にあるすべての概念に慣れていません。

  1. ./build-key-passと./build-keyを使用してクライアントキーを生成することの実際の利点は何ですか?これは、SSHキーを保護するパスワードに似ていますか?アカウントを必要とするすべての従業員が技術に精通しているわけではないので、別のセットアップ手順を導入する価値はありますか?
  2. クライアントキーを使用するときに、一般的なユーザー名/パスワード認証を要求しないオプションがあることがわかりました。私の計画は、各クライアントのサーバーでuseraddを実行することでした。 user-pass auth設定を使用しない場合、特定のクライアントへのアクセスを取り消すにはどうすればよいですか?
  3. アカウントを必要とするすべての従業員にこれらのクライアント証明書を安全に配信するにはどうすればよいですか? client.keyファイルはプライベートであると考えられており、ファイルを電子メールで送信することは安全ではないようです。
3
andrewvnice

各ポイントに対応するには:

1-OpenVPNキーのパスワード保護をSSHキーのパスワード保護にたとえることは正しい。

2-追加の認証方法を使用せずに、OpenVPNはクライアントの認証をサーバーによるクライアント証明書の検証(および理想的にはクライアントによるサーバー証明書の検証)のみに依存します。これにより、個々のクライアントのアクセスを取り消すには、クライアントの証明書を証明書失効リスト(CRL)に追加する(OpenVPNのバージョン1.5以降でサポートされる)か、クライアントからキーマテリアルを削除する(またはすべてのクライアントで証明書を切り替える)他のクライアント)。追加の認証方法を使用していない場合は、クライアントアクセスの取り消しを可能にするCRLが必要です。

キーを保護するパスワードは、追加の認証ではまったく役に立ちません。そのパスワードは、クライアントデバイスのキーを「ロック解除」するだけです。クライアントのユーザーがサーバーコンピューターに追加で認証される問題(およびアクセスの取り消しの問題)は軽減されません。

3-秘密鍵と公開鍵のペアは、ネットワーク経由で送信するのではなく、クライアント自体で生成する必要があります。クライアントで証明書要求を生成し、(証明書署名要求で)公開鍵をCAに送信して署名し、署名済み証明書をクライアントにインストールできます。これはすべてスクリプト化することができ、誰かがすでにそれを行っていると確信しています(そして、商用ライセンスのOpenVPN製品にその機能の一部が組み込まれていることを願っています)。

私はこれを見つけました My Certificate Wizard この目的のためだけに書かれたプロジェクトですが、プロセス全体を作成するためにOpenSSLコマンドラインツールを使用してクライアントですべてをスクリプト化しますユーザーにはほとんど見えません。

2
Evan Anderson