自动验证 OpenVPN 配置文件

自动验证 OpenVPN 配置文件

我想以某种方式自动验证文本文件是否确实是 OpenVPN 配置文件。我不需要知道它是否完全正确,我只想检查它是否是用于 OpenVPN 的配置文件,而不是某人错误上传的 /etc/passwd。

openvpn 文档似乎没有任何与我的目标相关的选项。

如果有的话,有人可以告诉我一个现成的解决方案吗?

答案1

我猜想搜索这三对作为同一行上的前两个标记应该这样做:

  • dev ...
  • proto ...
  • cipher ...

这行代码可以达到这个效果:

perl -wanle'$h{$F[0]}=$F[1] if scalar @F>1; END {if ($h{dev} && $h{proto} && $h{cipher}) {print "ok";} else {print "not ok"; exit 1;}}' < the_file

the_file最后是需要检查的文件。结果可能是:

  • ok退出代码 0
  • not ok并退出代码 1

如果至少有两个标记,则代码会提取每一行,并将行中的第二个标记分配给以第一个标记为键的哈希值。最后,它会检查键devproto和是否存在cipher。为了批量检查文件,应该优化代码。

答案2

cat [client_config_file].ovpn | sed '1,/<cert>/d;/<\/cert>/,$d' | openssl verify -verbose -CAfile /etc/openvpn/ca.crt

ca.crt = openvpn 服务器 CA(证书颁发机构)的公共证书文件

感谢:https://gist.github.com/dleonard00/fa482b4e803bf1f905526275c116c6d8

相关内容