3

ユーザーが OpenVPN サーバーに接続しているときに、クライアント証明書の ID を抽出したいと思います。

目的は、ユーザーが自分の証明書を他のユーザーと共有できないようにするスクリプトを作成することです。現在、どの証明書も有効な LDAP ユーザーで機能します。

script-security 3変数に最も多くの情報を与える継ぎ目を設定するとenv、この投稿の下部に変数が表示されます (実際の値は削除されています)。私が知る限り、ユーザーが使用した証明書に関連付けられるものは何もありません。

質問

クライアントの証明書/キー ID を取得して、それと照合するにはどうすればよい/etc/openvpn/easy-rsa/2.0/keys/*{.crt,.csr,.key}ですか? ファイル名は LDAP ユーザー名です。

例えば

/etc/openvpn/easy-rsa/2.0/keys/bob.crt
/etc/openvpn/easy-rsa/2.0/keys/bob.csr
/etc/openvpn/easy-rsa/2.0/keys/bob.key

env変数のダンプ

X509_1_OU=
common_name=
route_gateway_1=
ifconfig_remote=
untrusted_ip=
ifconfig_local=
proto_1=
tls_serial_1=
tls_serial_0=
tun_mtu=
X509_1_emailAddress=
tls_id_0=
X509_1_L=
tls_id_1=
X509_1_O=
password=
script_type=
verb=
username=
local_port_1=
config=
X509_0_CN=
dev=
auth_control_file=
X509_1_C=
X509_1_ST=
route_network_1=
remote_port_1=
PWD=
route_net_gateway=
daemon=
X509_1_name=
untrusted_port=
SHLVL=
script_context=
route_vpn_gateway=
route_netmask_1=
daemon_start_time=
X509_0_ST=
daemon_pid=
X509_1_CN=
X509_0_OU=
X509_0_emailAddress=
daemon_log_redirect=
X509_0_C=
X509_0_L=
link_mtu=
X509_0_O=
4

1 に答える 1

1

crtによって署名されていkeyます。crt新しい を生成csrして で再度署名しないと、を変更することはできませんkey。私は専門家ではないので、どれかはわかりませんが、クライアントが証明書の検証を破らない限り変更できないフィールドがいくつかあるはずです。wikiページを見ると、件名の属性(CNなど)を変更できないようです。

したがって、 userbobを で検証している場合は、証明書で bobbob.crtであることを確認してください。CNこれら 3 つすべてが一致する場合、ボブは自分の証明書を使用してログインしていることを意味します。

于 2012-02-12T00:24:55.703 に答える