OpenVPNクライアントがインポートするプロファイルを生成およびホストする方法を説明するドキュメントまたはリソースはありますか?理想的には、ユーザーが.ovpn +証明書の.Zipファイルを個別にフェッチしたり、適切なディレクトリに抽出したり、.ovpnを微調整したりする必要がないようにする必要があります。
どうやらOpenVPN 2.1以降、インライン構成がサポートされています。証明書とキーをすべて1つの構成ファイルで見つけることができます。ただし、この構成ファイルの作成方法に関するドキュメントは、2.3の最新リリースまで追加されませんでした。
INLINE FILE SUPPORT
OpenVPNのmanページ のセクション(詳細)。
client
proto udp
remote openvpnserver.example.com
port 1194
dev tun
nobind
key-direction 1
<ca>
-----BEGIN CERTIFICATE-----
# insert base64 blob from ca.crt
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
# insert base64 blob from client1.crt
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
# insert base64 blob from client1.key
-----END PRIVATE KEY-----
</key>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
# insert ta.key
-----END OpenVPN Static key V1-----
</tls-auth>
構成ファイルのドキュメントは、コマンドラインオプションのドキュメントと同じです。
OpenVPNでは、任意のオプションをコマンドラインまたは構成ファイルに配置できます。すべてのコマンドラインオプションの前には二重先頭ダッシュ( "-")が付いていますが、オプションが構成ファイルに配置されている場合は、このプレフィックスを削除できます。
OpenVPN 2.3から man page (2.1rc-something以降でサポートされています):
OpenVPNでは、
--ca, --cert, --dh, --extra-certs, --key, --pkcs12, --secret
および--tls-auth
オプションのメイン構成にファイルを含めることができます。各インラインファイルは、
<option>
行で始まり、</option>
行で終わります。これは、インラインファイルの使用例です。
<cert> -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- </cert>
インラインファイル機能を
--pkcs12
で使用する場合、インラインファイルはbase64でエンコードする必要があります。 .p12ファイルのbase64へのエンコードは、たとえばOpenSSLでopenssl base64 -in input.p12
を実行して実行できます。
key-direction
オプションにも注意してください。
--key-direction
--tls-auth
および--secret
オプションのオプションの方向パラメーターを指定する別の方法。インラインファイルを使用する場合に便利です(インラインファイルのセクションを参照してください)。
これは、Win7クライアントを備えたOpenVPN 2.3.4 Debian 8.9サーバーでテストされています。
ステップ1.デフォルトを含むファイルを作成します(私はそれをinline_client.confと呼びます)すべての設定はserver.confの値と一致する必要があります
client
dev tun
proto udp
remote yourserver.xyz 1194
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
remote-cert-tls server
cipher AES-256-CBC
comp-lzo
verb 3
;mute 20
ca [inline]
cert [inline]
key [inline]
tls-auth [inline] 1
ステップ2.次のスクリプトを作成し、必要に応じてパスを調整し、chmod ug+x MakeInline.sh
#!/bin/bash
# Default Variable Declarations
DEFAULT="inline_client.conf"
FILEEXT=".ovpn"
CRT=".crt"
KEY=".key"
CA="ca.crt"
TA="ta.key"
kPath="./keys/"
#Ask for a Client name
echo "Please enter an existing Client Name:"
read NAME
echo "Please enter an Name for the output file"
read ovpnName
#1st Verify that client's Public Key Exists
if [ ! -f $kPath$NAME$CRT ]; then
echo "[ERROR]: Client Public Key Certificate not found: $kPath$NAME$CRT"
exit
fi
echo "Client's cert found: $kPath$NAME$CRT"
#Then, verify that there is a private key for that client
if [ ! -f $kPath$NAME$KEY ]; then
echo "[ERROR]: Client 3des Private Key not found: $kPath$NAME$KEY"
exit
fi
echo "Client's Private Key found: $kPath$NAME$KEY"
#Confirm the CA public key exists
if [ ! -f $kPath$CA ]; then
echo "[ERROR]: CA Public Key not found: $kPath$CA"
exit
fi
echo "CA public Key found: $kPath$CA"
#Confirm the tls-auth ta key file exists
if [ ! -f $kPath$TA ]; then
echo "[ERROR]: tls-auth Key not found: $kPath$TA"
exit
fi
echo "tls-auth Private Key found: $kPath$TA"
#Ready to make a new .opvn file - Start by populating with the
cat $DEFAULT > $ovpnName$FILEEXT
#Now, append the CA Public Cert
echo "<ca>" >> $ovpnName$FILEEXT
cat $kPath$CA | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> $ovpnName$FILEEXT
echo "</ca>" >> $ovpnName$FILEEXT
#Next append the client Public Cert
echo "<cert>" >> $ovpnName$FILEEXT
cat $kPath$NAME$CRT | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> $ovpnName$FILEEXT
echo "</cert>" >> $ovpnName$FILEEXT
#Then, append the client Private Key
echo "<key>" >> $ovpnName$FILEEXT
cat $kPath$NAME$KEY >> $ovpnName$FILEEXT
echo "</key>" >> $ovpnName$FILEEXT
#Finally, append the TA Private Key
echo "<tls-auth>" >> $ovpnName$FILEEXT
cat $kPath$TA >> $ovpnName$FILEEXT
echo "</tls-auth>" >> $ovpnName$FILEEXT
echo "Done! $ovpnName$FILEEXT Successfully Created."
#Script written by Eric Jodoin
#Update by Eric Maasdorp 2017-12-16
ステップ3. MakeInline.sh
を実行します。build-key or build-key-pass
を使用して既に作成しておく必要があるクライアントの名前を要求されます。 ovpnファイルの名前を尋ねます。私の標準はServerToConnectTo.ClientName.ovpn
を生成するServerToConnectTo.ClientNameです
注:build-key
の代わりにbuild-key-pass
を使用した場合、*.ovpn
を取得した人は誰でもパスワードなしでサーバーにアクセスできます。
このPythonスクリプトをサーバーで実行して、クライアントキーとプロファイルを生成できます。インライン化しますが、これは私の作成ではなく、長く、定期的に更新される可能性があります。その分岐点は、将来のWebトラベラーがWebで検索できるようになる可能性が高いため、リンクが機能しない場合は、「openvpn_gen.py」を検索してみてください。