Convert Figma logo to code with AI

OpenVPN logoeasy-rsa

easy-rsa - Simple shell based CA utility

4,030
1,193
4,030
20

Top Related Projects

23,178

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.

28,868

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

  1. Initializing a new PKI:
./easyrsa init-pki
  1. Building a new Certificate Authority:
./easyrsa build-ca
  1. Generating a new certificate and key pair:
./easyrsa gen-req client1
  1. Signing a certificate request:
./easyrsa sign-req client client1

Getting Started

To get started with Easy-RSA:

  1. Clone the repository:

    git clone https://github.com/OpenVPN/easy-rsa.git
    
  2. Change to the Easy-RSA directory:

    cd easy-rsa/easyrsa3
    
  3. Initialize the PKI:

    ./easyrsa init-pki
    
  4. Build a new CA:

    ./easyrsa build-ca
    
  5. Generate a server certificate and key:

    ./easyrsa gen-req server nopass
    ./easyrsa sign-req server server
    
  6. 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

23,178

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.

28,868

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

CI

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:

https://pubs.opengroup.org/onlinepubs/9699919799/