如何从OpenVPN中提取客户端证书信息?

时间:2012-02-10 18:22:34

标签: python linux perl bash openvpn

当用户连接到我的OpenVPN服务器时,我想提取客户端证书的ID。

目的是编写一个脚本,阻止用户与他人共享证书。现在,任何证书都可以与任何有效的LDAP用户一起使用。

当我设置script-security 3,哪个接缝为env变量提供最多信息时,我会看到此帖子底部的变量(已移除实际值)。据我所知,其中没有任何内容可以与用户使用的证书相关联。

问题

如何获取客户端的证书/密钥ID,以便我可以将其与/etc/openvpn/easy-rsa/2.0/keys/*{.crt,.csr,.key}匹配?文件名是LDAP用户名。

E.g。

/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=

1 个答案:

答案 0 :(得分:1)

crtkey签名。如果不生成新crt并再次使用csr对其进行签名,则无法更改key。我不是专家权威,所以我不知道哪个,但是应该有一些字段,客户端不能在不破坏证书验证的情况下进行更改。查看wiki页面,在我看来,您无法更改主题属性(CN等)。

因此,如果您使用bob验证用户bob.crt,请在证书中确保CN为bob。匹配所有这三个应该意味着bob使用他自己的证书登录。

相关问题