Top Related Projects
Streisand sets up a new server running your choice of WireGuard, OpenConnect, OpenSSH, OpenVPN, Shadowsocks, sslh, Stunnel, or a Tor bridge. It also generates custom instructions for all of these services. At the end of the run you are given an HTML file with instructions that can be shared with friends, family members, and fellow activists.
Set up a personal VPN in the cloud
OpenVPN road warrior installer for Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS and Fedora
🔒 OpenVPN server in a Docker container complete with an EasyRSA PKI CA
Scripts to build your own IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2
Quick Overview
Easy-RSA is a utility for managing a Public Key Infrastructure (PKI) CA (Certificate Authority). It is designed to be a simple and straightforward way to generate and manage certificates, keys, and CRLs (Certificate Revocation Lists) for use with OpenVPN or for any other purpose requiring a PKI.
Pros
- Simple and user-friendly command-line interface
- Cross-platform compatibility (Windows, Linux, macOS)
- Highly customizable through variables and configuration files
- Supports both RSA and Elliptic Curve cryptography
Cons
- Limited GUI options, primarily command-line based
- May require additional knowledge of PKI concepts for advanced usage
- Not suitable for large-scale enterprise PKI management
- Documentation could be more comprehensive for complex scenarios
Code Examples
- Initializing a new PKI:
./easyrsa init-pki
- Building a new Certificate Authority:
./easyrsa build-ca
- Generating a new certificate and key pair:
./easyrsa gen-req client1
- Signing a certificate request:
./easyrsa sign-req client client1
Getting Started
To get started with Easy-RSA:
-
Clone the repository:
git clone https://github.com/OpenVPN/easy-rsa.git
-
Change to the Easy-RSA directory:
cd easy-rsa/easyrsa3
-
Initialize the PKI:
./easyrsa init-pki
-
Build a new CA:
./easyrsa build-ca
-
Generate a server certificate and key:
./easyrsa gen-req server nopass ./easyrsa sign-req server server
-
Generate a client certificate and key:
./easyrsa gen-req client1 nopass ./easyrsa sign-req client client1
These steps will set up a basic PKI with a CA, server certificate, and client certificate. For more advanced usage and configuration options, refer to the official documentation.
Competitor Comparisons
Streisand sets up a new server running your choice of WireGuard, OpenConnect, OpenSSH, OpenVPN, Shadowsocks, sslh, Stunnel, or a Tor bridge. It also generates custom instructions for all of these services. At the end of the run you are given an HTML file with instructions that can be shared with friends, family members, and fellow activists.
Pros of Streisand
- Automates the setup of multiple VPN protocols and services
- Provides a comprehensive suite of privacy-enhancing tools
- Supports various cloud providers for easy deployment
Cons of Streisand
- More complex setup process compared to Easy-RSA
- Requires more system resources due to multiple services
- May include unnecessary services for some users
Code Comparison
Easy-RSA:
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server
Streisand:
- name: Set up OpenVPN
include_role:
name: openvpn
- name: Set up Shadowsocks
include_role:
name: shadowsocks
Easy-RSA focuses solely on certificate management for OpenVPN, while Streisand automates the setup of multiple VPN protocols and privacy tools. Easy-RSA provides a simpler, more focused approach to certificate management, whereas Streisand offers a broader range of services but with increased complexity. Easy-RSA is more suitable for users who only need OpenVPN certificates, while Streisand is better for those seeking a comprehensive privacy solution across multiple protocols and services.
Set up a personal VPN in the cloud
Pros of algo
- Simplified setup process with automated deployment scripts
- Supports multiple VPN protocols (WireGuard, IPsec/IKEv2)
- Enhanced security features and modern encryption standards
Cons of algo
- Less flexible and customizable compared to easy-rsa
- Limited to cloud-based deployments, not ideal for on-premises setups
- Steeper learning curve for users familiar with traditional OpenVPN setups
Code comparison
easy-rsa:
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server
algo:
- name: Set up WireGuard VPN
hosts: localhost
roles:
- role: wireguard
The easy-rsa example shows manual certificate generation steps, while algo uses Ansible roles for automated deployment.
Summary
algo offers a more streamlined, cloud-focused VPN setup with modern protocols, while easy-rsa provides greater flexibility for traditional OpenVPN deployments. easy-rsa is better suited for users who need fine-grained control over their VPN infrastructure, whereas algo caters to those seeking a quick, secure cloud VPN solution with less manual configuration.
OpenVPN road warrior installer for Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS and Fedora
Pros of openvpn-install
- Simplified, automated installation process
- All-in-one script for setup, user management, and configuration
- Beginner-friendly with minimal user input required
Cons of openvpn-install
- Less flexibility and customization options
- Limited to specific operating systems (mainly Debian-based)
- May not be suitable for complex enterprise environments
Code Comparison
easy-rsa:
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh
openvpn-install:
wget https://git.io/vpn -O openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh
Summary
easy-rsa is a flexible key management tool for OpenVPN, offering granular control over certificate creation and management. It's suitable for various environments and provides extensive customization options.
openvpn-install is a user-friendly script that automates the entire OpenVPN setup process. It's ideal for quick deployments and users who prefer a streamlined approach, but may lack advanced features for complex setups.
The choice between the two depends on the user's needs, technical expertise, and deployment requirements. easy-rsa is better for those who need fine-grained control, while openvpn-install is perfect for rapid, straightforward deployments.
🔒 OpenVPN server in a Docker container complete with an EasyRSA PKI CA
Pros of docker-openvpn
- Containerized solution, offering easier deployment and isolation
- Includes built-in scripts for managing users and certificates
- Provides a more streamlined setup process for OpenVPN
Cons of docker-openvpn
- Less flexibility in configuration compared to easy-rsa
- Requires Docker knowledge and infrastructure
- May have a slightly larger footprint due to container overhead
Code Comparison
easy-rsa:
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server
docker-openvpn:
docker run -v $PWD:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM
docker run -v $PWD:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
docker run -v $PWD:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
The easy-rsa repository focuses on providing a flexible set of scripts for managing a PKI (Public Key Infrastructure) for OpenVPN. It offers more granular control over the certificate generation process but requires more manual steps.
The docker-openvpn repository, on the other hand, encapsulates the OpenVPN setup process within a Docker container. It simplifies deployment and management but may be less customizable for advanced use cases.
Both projects serve the purpose of setting up OpenVPN, but they cater to different deployment preferences and levels of expertise.
Scripts to build your own IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2
Pros of setup-ipsec-vpn
- Simpler setup process with automated scripts for quick deployment
- Supports a wider range of devices and operating systems out-of-the-box
- Includes additional security features like fail2ban integration
Cons of setup-ipsec-vpn
- Less flexibility in customizing certificate management
- May require more system resources compared to OpenVPN
- Limited to IPsec/L2TP and IPsec/XAuth ("Cisco IPsec") protocols
Code Comparison
setup-ipsec-vpn:
wget https://git.io/vpnsetup -O vpnsetup.sh
sudo sh vpnsetup.sh
easy-rsa:
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
The setup-ipsec-vpn project focuses on simplicity with a single script for deployment, while easy-rsa provides more granular control over certificate management. setup-ipsec-vpn is ideal for quick, standardized VPN setups, whereas easy-rsa offers more flexibility for customizing OpenVPN configurations and certificate handling.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Overview
easy-rsa is a CLI utility to build and manage a PKI CA. In layman's terms, this means to create a root certificate authority, and request and sign certificates, including intermediate CAs and certificate revocation lists (CRL).
Downloads
If you are looking for release downloads, please see the releases section on GitHub. Releases are also available as source checkouts using named tags.
Documentation
For 3.x project documentation and usage, see the README.quickstart.md file or the more detailed docs under the doc/ directory. The .md files are in Markdown format and can be converted to html files as desired for release packages, or read as-is in plaintext.
Getting help using easy-rsa
Currently, Easy-RSA development co-exists with OpenVPN even though they are separate projects. The following resources are good places as of this writing to seek help using Easy-RSA:
The openvpn-users mailing list is a good place to post usage or help questions.
You can also try libera.chat IRC network, in channels #openvpn for general support or #easyrsa for development discussion.
Branch structure
The easy-rsa master branch is currently tracking development for the 3.x release cycle. Please note that, at any given time, master may be broken. Feel free to create issues against master, but have patience when using the master branch. It is recommended to use a release, and priority will be given to bugs identified in the most recent release.
The prior 2.x and 1.x versions are available as release branches for tracking and possible back-porting of relevant fixes.
Branch layout is:
master <- Active: v3.2.x - Rolling.
v3.<N>.<N>-<LABEL> Active: Development branches.
testing Sandbox: Subject to change without notice.
v3.1.8 Sunset: Bugfix only for v3.1.7
The following are NOT compatible with OpenSSL version 3:
v3.0.6 Inactive: Archived.
v3.0.5 Inactive: Archived.
v3.0.4 Inactive: Archived.
release/3.0 Inactive: Archived.
release/2.x Inactive: Archived.
release/1.x Inactive: Unmaintained.
LICENSING info for 3.x is in the COPYING.md file
Contributing
Please refer to: doc/EasyRSA-Contributing.md
Code style, standards
We are attempting to adhere to the POSIX standard, which can be found here:
Top Related Projects
Streisand sets up a new server running your choice of WireGuard, OpenConnect, OpenSSH, OpenVPN, Shadowsocks, sslh, Stunnel, or a Tor bridge. It also generates custom instructions for all of these services. At the end of the run you are given an HTML file with instructions that can be shared with friends, family members, and fellow activists.
Set up a personal VPN in the cloud
OpenVPN road warrior installer for Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS and Fedora
🔒 OpenVPN server in a Docker container complete with an EasyRSA PKI CA
Scripts to build your own IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot