openvpn_generator
Python-native deterministic generator for OpenVPN TLS Crypt v2 Keys.
In some experiments I've been doing, I have a need to generate an OpenVPN Server/Client key independent of the OpenVPN binary. This code attempts to generate keys that will match and work, and generate the same keys if given the same seeds.
Not guaranteed to be secure for any production use-case, actually work, or to be kept current as OpenVPN makes changes. Just releasing the code in case anyone else is interested.
Quick start
$ ./gen_ovpn_keys.py --server-seed 'test123' --client-seed 'test123'
Generating TLS-crypt-v2 keys...
Server key written to: tls-crypt-v2-server.key
Client key written to: tls-crypt-v2-client.key
Keys generated successfully!
To use these keys with OpenVPN:
Server config: tls-crypt-v2 tls-crypt-v2-server.key
Client config: tls-crypt-v2 tls-crypt-v2-client.key
$
Usage
$ ./gen_ovpn_keys.py --server-seed 'test123' --client-seed 'test123' -h
usage: gen_ovpn_keys.py [-h] --server-seed SERVER_SEED --client-seed CLIENT_SEED [--server-output SERVER_OUTPUT] [--client-output CLIENT_OUTPUT] [--metadata METADATA] [--test] [--json]
Generate deterministic OpenVPN TLS-crypt-v2 keys from seed data
options:
-h, --help show this help message and exit
--server-seed SERVER_SEED
Seed data for server key (hex string or text)
--client-seed CLIENT_SEED
Seed data for client key (hex string or text)
--server-output SERVER_OUTPUT
Output file for server key (default: tls-crypt-v2-server.key)
--client-output CLIENT_OUTPUT
Output file for client key (default: tls-crypt-v2-client.key)
--metadata METADATA Custom metadata to include in client key (hex string)
--test Test generated keys with OpenVPN (requires openvpn binary)
--json Output keys as JSON to stdout instead of writing to files
$
License
MIT
Metadata
Release files for ovpn-tls-crypt-v2-generator 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ovpn_tls_crypt_v2_generator-1.0.1.tar.gz | 6.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ovpn_tls_crypt_v2_generator-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.0 kB
Release files / ovpn_tls_crypt_v2_generator-1.0.1.tar.gz
| Download URL | ovpn_tls_crypt_v2_generator-1.0.1.tar.gz |
|---|---|
| Size | 6.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
826b3c1e5ce3a890a973ed7f6aa9894b348ffd0a3746fa60776ba971b5bc8877
|
|
BLAKE2b-256 checksum How to use checksums |
cd36fc98bf6570cd164c8e89c5ab90cc3c2bce06c67e2e656598bc1752e73281
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.4
|
Release files / ovpn_tls_crypt_v2_generator-1.0.1-py3-none-any.whl
| Download URL | ovpn_tls_crypt_v2_generator-1.0.1-py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e3b2d2362988bd992e9d65c309b0096853bf6874d83fd5617a8feed37ec1dd68
|
|
BLAKE2b-256 checksum How to use checksums |
f8c5ed9e64f163a47bd05886f01cba152acd26ec106f21e17e565f676e610786
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.4
|