Easy-RSAによるOpenVPNの設定#
注釈
このガイドは進行中のものであり、随時更新されます。この点をご理解の上、ご利用ください。
このガイドでは、`Nitrokey Pro 2 <https://shop.nitrokey.com/shop/product/nk-pro-2-nitrokey-pro-2-3>`_または`Nitrokey Storage 2 <https://shop.nitrokey.com/de_DE/shop/product/nitrokey-storage-2-56>`_を使用してログインするようにOpenVPNクライアントを設定する方法を説明します。ソフトウェアの鍵管理には、OpenVPNとともに進化してきたユーティリティーである`Easy-RSA <https://github.com/OpenVPN/easy-rsa>`_を使用します。
To sign the certificates, we will use a Nitrokey HSM 2 set up as Certificate Authority, however this guide does not cover the set up of the CA itself (it is clear and well documented here).
ここでは、柔軟性があり、外部PKIによる鍵管理が可能なEasy-RSAを使用します。これをサーバで使用して署名要求を発行し、クライアントでも同じプロセスを繰り返します。証明書署名要求は、Nitorkey HSMのCAによって署名され、サーバとクライアントに再送信されます。
前提条件#
以下の資料では、以下の3台のマシンを必要とします。
Debian 10上のOpenVPNサーバ(v.2.5)(EC2仮想マシン-AWS)
Fedora 30のOpenVPNクライアント(v.2.4.9)(ローカルマシン)
認証局は、Fedora 30 を搭載したスタンドアロンのマシン(ローカルマシン)からアクセスします。
デバイスと対話するためには、`OpenSC 0.20 <https://github.com/OpenSC/OpenSC/wiki>`_をクライアントとCAマシン(ローカルマシン)にインストールする必要があります。`このリンク(*Unix)<https://github.com/OpenSC/OpenSC/wiki/Compiling-and-Installing-on-Unix-flavors>`_の指示に従ってセットアップすることができます。
Fedoraのマシンで依存ファイルをダウンロードするには、次の手順を実行します。
su -c 'dnf install readline-devel openssl-devel libxslt docbook-style-xsl pcsc-lite-devel automake autoconf libtool gcc zlib-devel'
Debian Linuxでは、より新しいOpenSCのパッケージが`こちら<https://github.com/Nitrokey/opensc-build>`_に用意されています。
物理的な鍵の管理には、以下のNitrokeysを使用します。
`Nitrokey Pro 2 (pdf)<https://www.nitrokey.com/files/doc/Nitrokey_Pro_factsheet.pdf>`_を使用した認証キーです。
`Nitrokey HSM 2 (pdf)<https://www.nitrokey.com/files/doc/Nitrokey_HSM_factsheet.pdf>`_を使用する認証局(CA)。
なお、Nitrokey HSM 2で認証局を構築するには、ドキュメント`の<certificate-authority.html#sign-a-server-certificate>`_に記載されている手順に従うことができます。
あるいは、`別のマシン上で独自のCAをセットアップするか、<https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-a-certificate-authority-ca-on-ubuntu-20-04>`_に依存するOpenVPNチュートリアルを使用するか、`Easy-RSA <https://openvpn.net/community-resources/setting-up-your-own-certificate-authority-ca/>`_に依存することもできます。最後の2つのオプションは、鍵管理のためのソフトウェアソリューションに依存しています。
サーバー側#
1.OpenVPNのインストール#
まず、``/etc/sysctl.conf``ファイルを編集して、IPフォワーディングを有効にする必要があります。
$ editor /etc/sysctl.conf次の行のコメントを外すか、適宜編集してください。
net.ipv4.ip_forward=1保存した後に閉じて、次のコマンドを入力します。
$ sysctl -pIPフォワーディングが完了したら、`の指示に従って、Debian 10サーバ用にOpenvPNの最新リリースをダウンロードする必要があります<https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos>`_。
rootに変更し、パッケージに署名したGPGキーをダウンロードする
$ sudo -s # wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -適切なOpenVPNパッケージのURLを``sources.list``ファイルに追加します。
# echo "deb http://build.openvpn.net/debian/openvpn/release/2.5 buster main" > /etc/apt/sources.list.d/openvpn-aptrepo.list # exitパスワードプロンプト」では、ログインに最低でもOpenVPN `バージョン2.4.8 <https://community.openvpn.net/openvpn/ticket/1215>`_が必要なので、OpenVPN 2.5をダウンロードしました。
次にOpenVPNをダウンロードします。
$ sudo apt install openvpnバージョンを確認したい場合は、``--version``を呼び出して、次のように表示します。
$ sudo openvpn --version OpenVPN 2.5_beta3 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep 1 2020 library versions: OpenSSL 1.1.1d 10 Sep 2019, LZO 2.10 Originally developed by James Yonan Copyright (C) 2002-2018 OpenVPN Inc <sales@openvpn.net> Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no \ enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=needless enable_fragment=yes enable_iproute2=yes \ enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_maintainer_mode=no enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no \ enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no \ enable_shared=yes enable_shared_with_static_runtimes=no enable_silent_rules=no enable_small=no enable_static=yes enable_strict=no enable_strict_options=no \ enable_systemd=yes enable_werror=no enable_win32_dll=yes enable_x509_alt_username=yes with_aix_soname=aix with_crypto_library=openssl with_gnu_ld=yes \ with_mem_check=no with_sysroot=no
2.Easy-RSAのインストール#
PKIを構築するために、サーバとクライアントのマシンにEasy-RSAの最新バージョンをダウンロードします。最新のリリースを入手するには、EasyRSAの公式GitHubプロジェクトの`Releasesページ<https://github.com/OpenVPN/easy-rsa/releases>`_にアクセスし、``.tgz`で終わるファイルのダウンロードリンクをコピーして、以下のコマンドに貼り付けます。
最新版のダウンロード
$ cd ~ $ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.7/EasyRSA-3.0.7.tgzタールボールの解凍
$ cd ~ $ tar xvf EasyRSA-3.0.7.tgz $ mv EasyRSA-3.0.7/ easyrsa/ # rename folder
3.OpenVPN サーバの PKI を作成する#
OpenVPNサーバの秘密鍵と証明書を作成する前に、OpenVPNサーバにローカルのPublic Key Infrastructureディレクトリを作成する必要があります。このディレクトリは、サーバやクライアントの証明書要求を、CAサーバに直接行うのではなく、管理するために使用します。
OpenVPNサーバにPKIディレクトリを構築するには、``vars``というファイルに、いくつかのデフォルト値を入力する必要があります。
``vars``ファイルの作成
$ touch ~/easyrsa/vars $ cd easyrsa/ $ editor varsファイルを開いたら、次の2行をペーストします。
set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"OpenVPNサーバのこの``vars``ファイルで必要なのは、認証局として使用しないので、この2行だけです。これにより、秘密鍵や証明書要求が楕円曲線暗号(ECC)を使用して鍵を生成するように設定され、クライアントやOpenVPNサーバの署名が安全に行われるようになります。
暗号アルゴリズムの選択に関しては、`このチュートリアルの<https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-an-openvpn-server-on-centos-8>`_のモデルに従っていますが、あなたの特定のニーズに応じてこれらをカスタマイズすることができます。
PKIの初期化
``vars``のファイルに入力したら、PKIディレクトリの作成に進むことができます。これを行うには、easyrsa スクリプトを init-pki オプション付きで実行します。
$ ./easyrsa init-pkiOpenVPNサーバのPKIを初期化したら、次のステップである、OpenVPNサーバの証明書要求と秘密鍵の作成に移ることができます。
4.``server.req``と``server.key``を作成。#
OpenVPNサーバーにすべての前提条件がインストールされたので、次のステップでは、秘密鍵(秘密にしておきたい)と、OpenVPNサーバー上の証明書署名要求(
.csr
)からなる鍵ペアを生成します。一般論として、鍵とリクエストを生成するシステムでは、通常サーバーはパスワードの入力なしで起動する必要があるため、これらのファイルは``nopass``の引数を使って暗号化されないままにしておきます。これは、*暗号化されていないキー*を生成するので、そのアクセスとファイルのパーミッション*を注意深く保護することを心掛けてください。
Tip
OpenVPNの設定メモです。
- The server, and each client, must have their own cert and key
file. The server and all clients will use the same CA file.
サーバー証明書は以下のものが必要です。
keyUsage: digitalSignature, keyEncipherment
extendedKeyUsage: serverAuth
サーバーへの署名要求の作成
非rootユーザーでOpenVPNサーバーの``~/easyrsa``ディレクトリに移動し、以下のコマンドを入力します。
$ cd easyrsa/ $ ./easyrsa gen-req server nopassこれにより、サーバーの秘密鍵と、``server.req``という証明書要求ファイルが作成されます。
署名済みの証明書ができたら、それをOpenVPNサーバーに転送します。
鍵をOpenVPNサーバのディレクトリにコピーする
$ sudo cp /home/admin/EasyRSA/pki/private/server.key /etc/openvpn/server/これらの手順を完了すると、OpenVPN サーバーの秘密鍵の作成が完了します。また、OpenVPN サーバー用の Certificate Signing Request も作成されています。
Tip
証明書署名要求のファイル拡張子
CAやHSMのチュートリアルで採用されているファイル拡張子は、
.csr``のファイルを作成することを示していますが、Easy-RSAでは
.req``の拡張子で証明書署名要求を作成します。ここでは、両方の拡張子を使い分けながら、正しいファイルを認証局に転送し、``.crt``の拡張子を持つ最終的な証明書を生成することを確認します。
このガイドの次のセクションでは、``.req``のファイルに、HSM 2デバイス上にデプロイされたCAで署名します。この目的のために、専用のマシンを使ってリクエストに署名することにします。
5.署名・回収 server.crt
#
以下の手順では、
server.req``(または``server.csr
)のファイルをCAシステムに転送する必要があります。転送自体にはセキュリティ上の問題はありませんが、転送が信頼できない場合には、受信したファイルが送信者のコピーと一致するかどうかを確認するのが賢明です。
これらの手順を踏むために、Easy-RSAで証明書署名要求を生成した後に署名するために、`この説明書<certificate-authority.html#creating-the-intermediate-certificate-authority>`_に大きく依存することになります。
server.req
ファイルに署名する。HSMにアクセスする専用のローカルマシンで、Opensc 0.20が提供するツールを使用して、``.req``のファイルに署名し、OpenVPNサーバに送り返します。ここでは、サーバーマシンからCAマシンにファイルを転送したと仮定します。
まず、HSM Nitrokeyを接続して、使用可能なキーをリストアップするために、この指示を入力します。
利用可能なデバイスのリストを問い合わせる
$ p11tool --list-all(必須ステップ) 初めてCAで証明書に署名する場合は、HSMからCAの秘密鍵のURIを取得し、それを設定ファイルに含めるとよい。
注釈
キーのURIはこのフォーマットでなければなりません。
pkcs11:model=PKCS%2315%20emulated;manufacturer=www.CardContact.de;serial=DENK0104068;token=SmartCard-HSM%20%28UserPIN%29%00%00%00%00%00%00%00%00%00;id=%E0%16%1C%C8%B6%F5%D6%6A%C6%83%5E%CD%EC%B6%23%FC%05%06%A6%75;object=root;type=private``openvpn/``のディレクトリを``certificate-authority/``の下に作成します。
$ mkdir/opt/certificate-authority/ $ cd /opt/certificate-authority/サインは``server.req``。
$ openssl ca -config sign_server_csrs.ini -engine pkcs11 -keyform engine -days 375 -notext -md sha512 -create_serial -in server.req -out /home/user/pki/issued/server.crt5.2.``server.crt``のファイルをサーバー・マシンに取得する。
署名済みの証明書をサーバーに転送する
サーバーのディレクトリに証明書を置く
$ mv /tmp/{server.crt,chain.crt} /etc/openvpn/server
6.OpenVPNサーバーの設定#
TLSを使用する接続では、認証のために複数の`証明書と鍵が必要になります<https://wiki.teltonika-networks.com/view/OpenVPN_configuration_examples>`_。これらの証明書を発行して署名したので、正しいディレクトリに配置します。ルートディレクトリに配置しなければならない証明書と鍵の内訳は以下の通りです。
OpenVPN server - The root certificate file (CA.crt or chain.crt in our setup) - Server certificate - Server key - Diffie Hellman Parameters (optional)OpenVPNサーバーでは、お気に入りのテキストエディタで設定ファイル``server.conf``を作成します。このファイルは必要に応じて設定することができますが、署名したファイルに選択した名前に従って、サーバー証明書と鍵のセクションを変更するようにしています。
# OpenVPN Server Certificate - CA, server key and certificate ca chain.crt cert server.crt key server.key以下は、これらの手順をテストするために使用できる設定ファイルです。
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh.pem server 10.8.0.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" keepalive 10 120 tls-auth ta.key 0 # This file is secret cipher AES-256-CBC user nobody group nogroup persist-key persist-tun status /var/log/openvpn/openvpn-status.log log /var/log/openvpn/openvpn.log log-append /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 tls-version-min 1.2 # Lower boundary for TLS version tls-version-max 1.2 # Higher boundary for TLS versionこの設定が正しく機能するかどうかをテストするには、このコマンドを使用します。
$ sudo openvpn --server --config server.conf
7.サーバーでOpenVPNサービスを開始する#
OpenVPNサービスをsystemctlに追加して有効にし、以下のコマンドで起動します。
$ sudo systemctl -f enable openvpn@server $ sudo systemctl start openvpn@serverOpenVPNサービスがアクティブかどうかをダブルチェックするには、このコマンドを使います。
$ sudo systemctl status openvpn@serverこの時点でOpenVPNが起動しているはずです。
クライアント側の設定#
1.OpenVPNとEasy-RSAのインストール#
ソフトウェアのインストール
OpenVPN 2.4.9とEasy-RSA 3.0.7をインストールするには、直接``dnf install``を使うことができます。
$ sudo dnf install openvpn easy-rsaそして、非rootで``Easy-RSA``というEasy RSA用のディレクトリを作成します。
$ mkdir ~/easyrsaそして、先ほどインストールしたEasy RSAパッケージにリンクさせます。
$ ln -s /usr/share/easy-rsa/3/* ~/easyrsa/
2.OpenVPNクライアント用のPKIを作成する#
OpenVPNサーバでPKIを作成したのと同じように、クライアント側でもEasy-RSAを使ったPKIを作成します。
3.``client.req``と``client.key``を作成する。#
サーバー上でキーペアを発行したのと同じ方法で、クライアント用のキーペアを生成します。これは
client.req
ファイルとclient.key
ファイルで構成されます。後者は、クライアントマシン上で秘密にしておく必要があります。
4.``client.req``に署名し、``client.crt``のファイルを発行する。#
5.CA機からNitrokeyに``client.crt``をインポートする。#
client.crt``のファイルを作成した後、CAマシンにNitrokey Pro 2デバイスを接続し、
.crt``をこのコマンドでPro 2デバイスにインポートします。$ pkcs15-init --store-certificate client.crt --id 3キーがNitrokeyに有効に保存されているかどうかは、このコマンドで確認できます。
$ pkcs15-tool -cあるいは、代わりに
$ pkcs11-tool --list-objectsその他のコマンドについては、`OpenSC wiki <https://github.com/OpenSC/OpenSC/wiki/OpenPGP-card>`_を参照してください。
6.CA機から``chain.crt``のファイルを取得します。#
While we keep the
client.crt
stored on the nitrokey Pro 2 device, we must retrieve thechain.crt
file on the client machine, and store it in the adequate directory. We may usescp
as in the method explained in the server section of this guide.
7.クライアントがNitrokeyと対話できるように設定します。#
さて、クライアントマシンに戻って、Nitrokey Proを接続し、それを使ってサーバーとのVPN接続を確立します。一般的に、TLSを使用した接続では、認証のために複数の証明書と鍵が必要になります。
OpenVPN client - The root certificate file (`chain.crt`) - Client certificate - Client keyこのガイドでは、以下の``client.conf``ファイルを作成し、必要なオプションを適宜追加しています。
client dev tun proto udp remote <server> 1194 resolv-retry infinite nobind user nobody group nobody persist-key persist-tun ca ca.crt remote-cert-tls server cipher AES-256-CBC verb 3 redirect-gateway def1 tls-version-min 1.2 # Lower boundary for TLS version tls-version-max 1.2 # Higher boundary for TLS version
正しいオブジェクトの決定
各 PKCS#11 プロバイダーは、複数のデバイスをサポートすることができます。利用可能なオブジェクトのリストを表示するには、次のコマンドを使用できます。
$ openvpn --show-pkcs11-ids /usr/lib64/pkcs11/opensc-pkcs11.so The following objects are available for use. Each object shown below may be used as parameter to --pkcs11-id option please remember to use single quote mark. Certificate DN: CN=client Serial: E53DA75C5B8F1518F520BCEF0128C09F Serialized id: pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03各証明書と秘密鍵のペアは、ユニークな``Serialized id``の文字列を持っています。要求された証明書のシリアル化されたid文字列は、設定ファイルで指定する必要があります。これを行うには、シングルクォートマークを使用して、``pkcs11-id``オプションを追加します。
pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'取得したシリアライズドIDを設定ファイルに追加する
お好きなテキストエディターでserver.confファイルを開き、``Serialized id``に注意しながら、以下の行を追加します。
pkcs11-providers /usr/lib64/pkcs11/opensc-pkcs11.so pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03'OpenVPNの<https://openvpn.net/community-resources/how-to/>`_認証に関連する`設定を追加する場合は、オプションですが、鍵の管理を処理するために数行を追加することもできます。
注釈
クリックするとコードが表示されます
# nitrokey config pkcs11-providers /usr/lib64/pkcs11/opensc-pkcs11.so pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03' # pkcs11-pin-cache 300 # daemon # auth-retry nointeract # management-hold # management-signal # management 127.0.0.1 8888 # management-query-passwords pkcs11-cert-private 1 # Prompt for PINオプションステップ
Nitrokeyにトークンがある場合とない場合の構成をテストする必要がある場合は、同じ``client.conf``に行を追加し、必要に応じて関連する行をコメント/アンコメントすることができます。
注釈
クリックするとコードが表示されます
# non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1OpenVPNクライアントの設定
最終的な設定ファイル
client.conf
は、以下のようになります。client dev tun proto udp remote <server> 1194 resolv-retry infinite nobind user nobody group nobody persist-key persist-tun ca ca.crt remote-cert-tls server cipher AES-256-CBC verb 3 redirect-gateway def1 tls-version-min 1.2 # Lower boundary for TLS version tls-version-max 1.2 # Higher boundary for TLS version # nitrokey login pkcs11-providers /usr/lib64/pkcs11/opensc-pkcs11.so pkcs11-id 'pkcs11:model=pkcs11:model=PKCS%NNNN%20emulated;token=User%20PIN%20%28OpenPGP%20card%29;manufacturer=ZeitControl;serial=000NNNNNN;id=%03' # pkcs11-pin-cache 300 # daemon # auth-retry nointeract # management-hold # management-signal # management 127.0.0.1 8888 # management-query-passwords pkcs11-cert-private 1 # Prompt for PIN # OR # non_nitrokey login # cert client.crt # key client.key # tls-auth ta.key 1Configure OpenVPN (Windows only)
ハンドシェイクを確立するためには、OpenVPNに含まれるOpenSSLを設定する必要があります。
Create the directory
ssl
inC:\Program Files\OpenVPN
and create fileopenssl.cnf
with the following content :openssl_conf = default_conf
[default_conf ] ssl_conf = ssl_sect
[ssl_sect ] system_default = ssl_default_sect
[ssl_default_sect ] 署名アルゴリズム = RSA+SHA512:ECDSA+SHA512:RSA+SHA384:ECDSA+SHA384:RSA+SHA256:ECDSA+SHA256 MaxProtocol = TLSv1.2 MinProtocol = TLSv1.2
この修正により、` <https://support.nitrokey.com/t/nitrokey-pro-with-openssl-1-1-1-tls-1-3-and-rsa-based-certificates/2180/2>`__、` <https://support.nitrokey.com/t/openvpn-openssl-error-141f0006/2637>` __、` <https://community.openvpn.net/openvpn/ticket/1215>`__ で報告されているようなエラーは発生しなくなります。
既知の問題
OpenSCでのOpenVPNログインには、いくつかの既知の問題があります。これらの問題については こちら を参照してください。
8.OpenVPNクライアントの起動#
クライアントでOpenVPNサービスを開始する
OpenVPNサービスを有効にし、以下のコマンドで起動してください。
$ sudo systemctl -f enable openvpn-server@server.service $ sudo systemctl start openvpn-server@server.serviceOpenVPNサービスがアクティブかどうかを再確認するには、このコマンドを使用します。
$ sudo systemctl status openvpn-server@server.serviceユーザーPINの入力
OpenVPNクライアントを実行する際に、NitrokeyのPINを入力する必要があります。
$ sudo openvpn --client --config client.conf Fri Sep 11 17:42:01 2020 OpenVPN 2.4.9 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Apr 24 2020 Fri Sep 11 17:42:01 2020 library versions: OpenSSL 1.1.1g FIPS 21 Apr 2020, LZO 2.08 Fri Sep 11 17:42:01 2020 PKCS#11: Adding PKCS#11 provider '/usr/lib64/pkcs11/opensc-pkcs11.so' Enter User PIN (OpenPGP card) token Password: ******警告
Unfortunately OpenVPN doesn’t seem to be able to establish a handshake on some operating systems and stops at an error as reported here, here and here
This is what the error output looks like: $ sudo openvpn --client --config client.conf Fri Sep 11 17:42:01 2020 OpenVPN 2.4.9 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Apr 24 2020 Fri Sep 11 17:42:01 2020 library versions: OpenSSL 1.1.1g FIPS 21 Apr 2020, LZO 2.08 Fri Sep 11 17:42:01 2020 PKCS#11: Adding PKCS#11 provider '/usr/lib64/pkcs11/opensc-pkcs11.so' Enter User PIN (OpenPGP card) token Password: ******`` Fri Sep 11 17:42:12 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]18.157.180.240:1194`` Fri Sep 11 17:42:12 2020 Socket Buffers: R=[212992->212992] S=[212992->212992]`` Fri Sep 11 17:42:12 2020 UDP link local: (not bound) Fri Sep 11 17:42:12 2020 UDP link remote: [AF_INET]18.157.180.240:1194 Fri Sep 11 17:42:12 2020 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay Fri Sep 11 17:42:12 2020 TLS: Initial packet from [AF_INET]18.157.180.240:1194, sid=d79690cf 9e38ce89 Fri Sep 11 17:42:12 2020 VERIFY OK: depth=1, CN=server_CA Fri Sep 11 17:42:12 2020 VERIFY KU OK Fri Sep 11 17:42:12 2020 Validating certificate extended key usage Fri Sep 11 17:42:12 2020 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication Fri Sep 11 17:42:12 2020 VERIFY EKU OK Fri Sep 11 17:42:12 2020 VERIFY OK: depth=0, CN=server Fri Sep 11 17:42:12 2020 OpenSSL: error:141F0006:SSL routines:tls_construct_cert_verify:EVP lib Fri Sep 11 17:42:12 2020 TLS_ERROR: BIO read tls_read_plaintext error Fri Sep 11 17:42:12 2020 TLS Error: TLS object -> incoming plaintext read error Fri Sep 11 17:42:12 2020 TLS Error: TLS handshake failed Fri Sep 11 17:42:12 2020 SIGUSR1[soft,tls-error] received, process restarting Fri Sep 11 17:42:12 2020 Restart pause, 5 second(s)一部の報告では、ターミナル上でPINの入力を求められないことがあります。これを回避するには、このコマンドを使ってPINでログインする方法があります。
$ telnet 8888 password 'User PIN (OpenPGP card) token' <PIN>代わりに、systemdサポートを無効にしてOpenVPN `クライアントを再コンパイルすると、期待通りにPINの入力を求められます。
また、OpenVPNインスタンスにViscosityクライアントでログインする方法もあります。Viscosityクライアントは、特にPINの入力において優れたユーザーエクスペリエンスを提供します。