如何使用php动态生成openvpn客户端密钥并将变量传递给shell命令?
我想用PHP生成客户端密钥。当客户端密钥生成时,它应该给我密钥的到期日期 root@zohaib-VirtualBox:/etc/openvpn/easy rsa#/构建密钥客户端1 生成2048位RSA私钥++++++ 正在将新私钥写入“client1.key” 您将被要求输入将纳入证书申请的信息。您将要输入的内容称为可分辨名称或DN。有相当多的字段,但您可以为某些字段保留一些空白,因为会有一个默认值 如果输入“.”,该字段将留空。 国家名称(两个字母代码)[GB]: 州或省名称(全称)[伦敦]: 地点名称(如城市)[伦敦]: 组织名称(如公司)[组织]: 组织单位名称(如部门)[]: 通用名称(例如,您的姓名或服务器的主机名)[client1]: 名称[组织服务器]: 电子邮件地址[admin@org.com]: 请输入要与证书请求一起发送的以下“额外”属性 质询密码[]: 可选的公司名称[]: 使用/etc/openvpn/easy rsa/openssl-1.0.0.cnf中的配置 检查请求是否与签名匹配确定受试者的可分辨名称如下 国家名称:可打印:'GB' 州或省名称:可打印:'London' LocationName:可打印:'London' 组织名称:可打印:'Org' commonName:可打印:'client1' 名称:可打印:'OrgServer' 电子邮件地址:IA5STRING:'admin@gamban.com" 证书将被认证至4月21日15:43:47 2026 GMT(3650天)签署证书?[是/否]:是 1/1证书请求已认证,是否提交?[y/n]y 写出包含1个新条目的数据库 数据库更新 root@zohaib-VirtualBox:/etc/openvpn/easy rsa 35;您可以使用并获得要使用的结果,例如,使用正则表达式来匹配密钥的到期日期等,即:如何使用php动态生成openvpn客户端密钥并将变量传递给shell命令?,php,bash,shell,key,openvpn,Php,Bash,Shell,Key,Openvpn,我想用PHP生成客户端密钥。当客户端密钥生成时,它应该给我密钥的到期日期 root@zohaib-VirtualBox:/etc/openvpn/easy rsa#/构建密钥客户端1 生成2048位RSA私钥++++++ 正在将新私钥写入“client1.key” 您将被要求输入将纳入证书申请的信息。您将要输入的内容称为可分辨名称或DN。有相当多的字段,但您可以为某些字段保留一些空白,因为会有一个默认值 如果输入“.”,该字段将留空。 国家名称(两个字母代码)[GB]: 州或省名称(全称)[伦敦
$ovpnKey = shell_exec("your command here");
命令的结果将保留在var$ovpnKey
上
更新: 要自动创建新的OpenVPN客户端证书,请使用以下脚本。确保您至少编辑了以下变量
OPENVPN\u RSA\u DIR
OPENVPN\u密钥
密钥下载路径
#! /bin/bash
# Script to automate creating new OpenVPN clients
# The client cert and key, along with the CA cert is
# zipped up and placed somewhere to download securely
#
# H Cooper - 05/02/11
#
# Usage: new-openvpn-client.sh <common-name>
# Set where we're working from
OPENVPN_RSA_DIR=/etc/openvpn/easy-rsa/2.0
OPENVPN_KEYS=$OPENVPN_RSA_DIR/keys
KEY_DOWNLOAD_PATH=/var/www/secure
# Either read the CN from $1 or prompt for it
if [ -z "$1" ]
then echo -n "Enter new client common name (CN): "
read -e CN
else
CN=$1
fi
# Ensure CN isn't blank
if [ -z "$CN" ]
then echo "You must provide a CN."
exit
fi
# Check the CN doesn't already exist
if [ -f $OPENVPN_KEYS/$CN.crt ]
then echo "Error: certificate with the CN $CN alread exists!"
echo " $OPENVPN_KEYS/$CN.crt"
exit
fi
# Enter the easy-rsa directory and establish the default variables
cd $OPENVPN_RSA_DIR
source ./vars > /dev/null
# Copied from build-key script (to ensure it works!)
export EASY_RSA="${EASY_RSA:-.}"
"$EASY_RSA/pkitool" --batch $CN
# Take the new cert and place it somewhere it can be downloaded securely
zip -q $KEY_DOWNLOAD_PATH/$CN-`date +%d%m%y`.zip keys/$CN.crt keys/$CN.key keys/ca.crt
# Celebrate!
echo ""
echo "#############################################################"
echo "COMPLETE! Download the new certificate here:"
echo "https://domain.com/secure/$CN-`date +%d%m%y`.zip"
echo "#############################################################"
资料来源:
目前我只是在命令行中手动创建密钥,但现在我希望它在php中执行,并返回密钥到期日期等结果。您能发布一个由该命令生成的输出示例吗?请查看上面的脚本,我已经更新了我的答案。希望有帮助!但它也提出了许多问题,如何用php填充这些值?看看上面的代码。适用于我的CentOS 7。甚至可以从web URL调用,同时向相应的文件和目录添加一些读和/或写权限。
$ovpnKey = shell_exec("sh /full/path/to/new-openvpn-client.sh <common-name>");