Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Easy-RSAのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Easy-RSA
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:仮想プライベートネットワーク]] [[en:Easy-RSA]] [[OpenVPN]] をセットアップするときはまず[[Wikipedia:ja:公開鍵基盤|公開鍵基盤 (PKI)]] を作成します。公開鍵基盤は以下から構成されます: * [[Wikipedia:ja:認証局|認証局 (CA)]] のマスター公開証明書と秘密鍵。 * 各サーバーの公開証明書と秘密鍵のペア。 * 各クライアントの公開証明書と秘密鍵のペア。 [[SSH 鍵]]による鍵認証に認証局 (CA) のレイヤーが追加されたものと考えてください。OpenVPN では双方向の認証が使われており、クライアントがサーバーの証明書を認証すると共に、サーバーはクライアントの証明書を認証しなければなりません。これはクライアントとサーバーの両方の証明書で第三者の署名 (CA) を使うことで実現されます。認証が完了する前に次のチェックが実行されます。詳しくは [https://www.secure-computing.net/openvpn/howto.php#pki secure-computing guide] を見てください。 {{Note| * 以下で説明している操作を行うときはマシンから秘密鍵ファイルを安全に転送する必要があります。ガイドの目的にそって scp を使っていますが、他の方法で転送することもできます。Arch ではデフォルトで SSH で root ユーザーを使ってログインすることができないため、scp を使うときは root 以外のユーザーにファイルの所有権を移す必要があります。ガイドの中では ''foo'' という名前のユーザーを使っています。 * エントロピーが少ないデバイスで鍵を生成するのは困難です。詳しくは [https://community.openvpn.net/openvpn/wiki/GettingStartedwithOVPN#Configuringencryption] を見てください。場合によっては、[[乱数生成#代替案|暗号的に安全な疑似乱数生成]]を使用できます。 }} == 認証局 (CA) == セキュリティ上の理由から CA とするマシンは OpenVPN を実行するマシンとは分けることが推奨されます。 '''CA マシン''' には {{pkg|easy-rsa}} をインストールして新しい PKI を初期化して証明書に署名するための CA のキーペアを生成してください: # cd /etc/easy-rsa # export EASYRSA=$(pwd) # easyrsa init-pki # easyrsa build-ca OpenVPN 2.4 以降では、TLS 接続に楕円曲線を使用することもできます (例: tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384)。楕円曲線暗号化によりセキュリティが向上し、Diffie-Hellman パラメータ ファイルが不要になります。[https://forums.openvpn.net/viewtopic.php?f=4&t=23227] および [https://www.maths.tcd.ie/~fionn/misc/ec_vpn.php] を参照してください。 次に、{{ic|/etc/easy-rsa/vars}} に以下の行を追加します: {{hc|/etc/easy-rsa/vars| set_var EASYRSA_DIGEST "sha512" # Default sha256 set_var EASYRSA_NS_SUPPORT "yes" # for Netscape compatibility, deprecated }} 楕円曲線の場合: {{hc|/etc/easy-rsa/vars| set_var EASYRSA_ALGO ec set_var EASYRSA_CURVE secp521r1 }} または [[Wikipedia:Twisted_Edwards_curve|ツイステッドエドワーズ曲線]] の場合: {{hc|/etc/easy-rsa/vars| set_var EASYRSA_ALGO ed set_var EASYRSA_CURVE ed25519 }} 次に、PKI をセットアップして、CA 証明書を生成します: # cd /etc/easy-rsa # export EASYRSA=$(pwd) # export EASYRSA_VARS_FILE=/etc/easy-rsa/vars # easyrsa init-pki # easyrsa build-ca == OpenVPN サーバーファイル == OpenVPN サーバーには以下が必要です (アルファベット順): # CA の公開鍵。 # Diffie-Hellman (DH) パラメータファイル (TLS モードを使うのに必須)。 # サーバーのキーペア (公開証明書と秘密鍵)。 # Hash-based Message Authentication Code (HMAC) 鍵。 この記事に書かれている設定を全て行うと、サーバーには以下のファイルが生成されます: # {{ic|/etc/openvpn/server/ca.crt}} # {{ic|/etc/openvpn/server/dh.pem}} # {{ic|/etc/openvpn/server/servername.crt}} と {{ic|/etc/openvpn/server/servername.key}} # {{ic|/etc/openvpn/server/ta.key}} === CA 公開証明書 === 先に作成した CA の公開鍵 {{ic|/etc/easy-rsa/pki/ca.crt}} を OpenVPN を動作させるマシンにコピーしてください。 '''CA マシン'''で以下を実行: # cp /etc/easy-rsa/pki/ca.crt /tmp # chown foo /tmp/ca.crt $ scp /tmp/ca.crt foo@hostname-of-openvpn-server:/tmp '''OpenVPN サーバーマシン'''で以下を実行: # mv /tmp/ca.crt /etc/openvpn/server/ # chown root:root /etc/openvpn/server/ca.crt === サーバー証明書と秘密鍵 === '''OpenVPN サーバーマシン'''に {{pkg|easy-rsa}} をインストールしてサーバーのキーペアを生成してください: # cd /etc/easy-rsa # easyrsa init-pki # easyrsa gen-req servername nopass # cp /etc/easy-rsa/pki/private/servername.key /etc/openvpn/server/ 以下のファイルが作成されます: * {{ic|/etc/easy-rsa/pki/reqs/servername.req}} * {{ic|/etc/easy-rsa/pki/private/servername.key}} === Diffie-Hellman (DH) パラメータファイル === '''OpenVPN サーバーマシン'''で最初の {{ic|dh.pem}} ファイルを作成: # openssl dhparam -out /etc/openvpn/server/dh.pem 2048 {{Note|2048よりも大きな値 (例えば4096) を使うこともできますが、生成する時間が相当長くなるわりにはセキュリティ上のメリットはあまりありません。ただし DH の素数は RSA 鍵の長さと同じにすることが推奨されます。詳しくは [https://community.openvpn.net/openvpn/wiki/GettingStartedwithOVPN#Configuringencryption] を参照。}} === Hash-based Message Authentication Code (HMAC) 鍵 === '''OpenVPN サーバーマシン'''で HMAC 鍵を作成: # openvpn --genkey --secret /etc/openvpn/server/ta.key 上記のコマンドで全ての SSL/TLS ハンドシェイクパケットに HMAC 署名が追加されます。さらに適切な HMAC 署名が存在しない UDP パケットはすぐに拒否されるため、以下の攻撃から防護されます: * ポートスキャン。 * OpenVPN の UDP ポートに対する DOS 攻撃。 * 未権限のマシンからの SSL/TLS ハンドシェイク。 * SSL/TLS 実装のバッファオーバーフロー脆弱性に対する攻撃。 == OpenVPN クライアントファイル == === クライアント証明書と秘密鍵 === {{pkg|easy-rsa}} がインストールされていればどんなマシンでもクライアントファイルを生成できます。 PKI が初期化されていない場合、以下のコマンドを実行: # cd /etc/easy-rsa # easyrsa init-pki クライアント鍵と証明書を生成: # cd /etc/easy-rsa # easyrsa gen-req client1 nopass 以下のファイルが作成されます: * {{ic|/etc/easy-rsa/pki/reqs/client1.req}} * {{ic|/etc/easy-rsa/pki/private/client1.key}} 他のクライアントでも必要なだけ gen-req を繰り返しおこなってください。 == 証明書に署名してサーバーとクライアントに返す == === CA で証明書を取得・署名 === サーバーとクライアント証明書には CA による署名を加えて OpenVPN サーバー/クライアントに転送する必要があります。 '''OpenVPN サーバー''' (あるいは証明書/キーペアを生成するのに使用したマシン) で以下のコマンドを実行: # cp /etc/easy-rsa/pki/reqs/*.req /tmp # chown foo /tmp/*.req CA マシンにファイルを安全に転送: $ scp /tmp/*.req foo@hostname-of-CA:/tmp '''CA マシン'''で証明書要求をインポートして署名: # cd /etc/easy-rsa # easyrsa import-req /tmp/servername.req servername # easyrsa import-req /tmp/client1.req client1 # easyrsa sign-req server servername # easyrsa sign-req client client1 以下の署名された証明書が作成されます: * {{ic|/etc/easy-rsa/pki/issued/servername.crt}} * {{ic|/etc/easy-rsa/pki/issued/client1.crt}} 残った .req ファイルは削除して問題ありません: # rm -f /tmp/*.req === サーバーとクライアントに署名した証明書を返却 === '''CA マシン'''で署名された証明書をコピーしてサーバー・クライアントに転送してください: # cp /etc/easy-rsa/pki/issued/*.crt /tmp # chown foo /tmp/*.crt $ scp /tmp/*.crt foo@hostname-of-openvpn_server:/tmp '''OpenVPN サーバー'''では所定の場所に証明書を移動して所有権を再設定します: # mv /tmp/servername.crt /etc/openvpn/server/ # chown root:root /etc/openvpn/server/servername.crt 署名されたクライアント証明書はどこに保存してもかまいません。[[OpenVPN#クライアントプロファイル (Linux, iOS, Android 共通)|ovpn クライアントプロファイル]]を準備するときに使います: # mkdir /etc/easy-rsa/pki/signed # mv /tmp/client1.crt /etc/easy-rsa/pki/signed == 証明書を無効化して OpenVPN サーバーに通知 == === 証明書の無効化 === 特定ユーザーのアクセスを拒否するために証明書を無効化する必要が出てくることもあります。以下は "client1" 証明書を無効化する例です。 '''CA マシン'''で以下を実行: # cd /etc/easy-rsa # easyrsa revoke client1 # easyrsa gen-crl 上記のコマンドで CRL ファイル {{ic|/etc/easy-rsa/pki/crl.pem}} が生成されるので OpenVPN サーバーに転送して有効にしてください。 === OpenVPN サーバーに警告 === '''CA マシン'''で以下のコマンドを実行: # cp /etc/easy-rsa/pki/crl.pem /tmp # chown foo /tmp/crl.pem '''OpenVPN マシン'''で {{ic|crl.pem}} をコピーしてサーバーから読み込めるように設定: # mv /tmp/crl.pem /etc/openvpn/server/ # chown root:root /etc/openvpn/server/crl.pem {{ic|/etc/openvpn/server/server.conf}} を編集して crl-verify ディレクティブをアンコメントして {{ic|openvpn-server@server.service}} を[[再起動]]してください: {{hc|/etc/openvpn/server/server.conf| . crl-verify /etc/openvpn/server/crl.pem . }} == Abbreviated example specifically for containerized Openvpn == This section is specifically for users wanting to run Openvpn in a Linux container ([[LXC]]). The code below is designed to be pasted into a root shell; the standard hash has been omitted to allow for easy copy/paste operations. It is recommended to have two different shell windows open, one for the host and one for the container. {{Note| * It is assumed that the CA machine is the host and the server machine is the container. * Both the host and container need to have both {{Pkg|openvpn}} and {{Pkg|easy-rsa}} installed. * The container needs to be running. * Define the name of the container in the CONTAINERNAME variable below. }} On the host: CONTAINERNAME=foo /etc/easy-rsa easyrsa init-pki && easyrsa build-ca cp /etc/easy-rsa/pki/ca.crt /var/lib/lxc/$CONTAINERNAME/rootfs/etc/openvpn/server/ {{Note|One may substitute other names in the 2nd line of this code (the for loop). At a minimum, one needs to generate a key for the server and for at least 1 client. The generic words "server" and "client" are shown, but in reality, these can by any words such as the hostname of the container or the name of the intended user. As well, one can add additional words to the for loop if more than 2 keys are needed. If that is the case, just be sure to add corresponding lines to the subsequent steps for each of them.}} In the container: cd /etc/easy-rsa && easyrsa init-pki for i in server client; do easyrsa gen-req $i nopass; done cp /etc/easy-rsa/pki/private/server.key /etc/openvpn/server/ openssl dhparam -out /etc/openvpn/server/dh.pem 2048 openvpn --genkey secret /etc/openvpn/server/ta.key Back on the host: easyrsa import-req /var/lib/lxc/$CONTAINERNAME/rootfs/etc/easy-rsa/pki/reqs/junk.req junk easyrsa import-req /var/lib/lxc/$CONTAINERNAME/rootfs/etc/easy-rsa/pki/reqs/client.req client easyrsa sign-req client client easyrsa sign-req server server mkdir /var/lib/lxc/$CONTAINERNAME/rootfs/etc/easy-rsa/pki/issued/ mkdir /var/lib/lxc/$CONTAINERNAME/rootfs/etc/easy-rsa/pki/signed/ cp /etc/easy-rsa/pki/issued/*.crt /var/lib/lxc/$CONTAINERNAME/rootfs/etc/easy-rsa/pki/issued/ That will provide the needed files to make an OpenVPN compatible tunnel profile for the client, and the needed server key files for the server. To generate a client profile, refer to [[OpenVPN#ovpngen]]. == 参照 == * [https://github.com/OpenVPN/easy-rsa/blob/master/README.quickstart.md README.quickstart]. * [https://github.com/OpenVPN/easy-rsa/blob/master/doc/EasyRSA-Advanced.md EASYRSA-Advanced].
このページで使用されているテンプレート:
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:META Box
(
ソースを閲覧
)
テンプレート:META Box Blue
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
Easy-RSA
に戻る。
検索
検索
Easy-RSAのソースを表示
話題を追加