Создание сертификатов для OpenVPN на примере CentOS 2


Инструкция поможет быстро сгенерировать сертификаты для работы OpenVPN

Если уже установлен пакет openvpn, то либо есть набор скриптов easy-rsa для генерации сертификатов, либо установлен дополнительный репозитарий Epel и
можно доустановить  набор инструментов easy-rsa:

# yum -y install easy-rsa

Далее пошаговая инструкция:

  1. Скопировать скрипты easy-rsa в папку с openvpn:
    # mkdir -p /etc/openvpn/easy-rsa/keys
    # cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
  2. Отредактировать файл /etc/openvpn/easy-rsa/vars:
    # Increase this to 2048 if you
    # are paranoid.  This will slow
    # down TLS negotiation performance
    # as well as the one-time DH parms
    # generation process.
    export KEY_SIZE=2048
    
    # In how many days should the root CA key expire?
    export CA_EXPIRE=3650
    
    # In how many days should certificates expire?
    export KEY_EXPIRE=3650
    
    # These are the default values for fields
    # which will be placed in the certificate.
    # Don't leave any of these fields blank.
    export KEY_COUNTRY="US"
    export KEY_PROVINCE="CA"
    export KEY_CITY="SanFrancisco"
    export KEY_ORG="Fort-Funston"
    export KEY_EMAIL="ca@example.com"
    export KEY_OU="MyOrganizationalUnit"
    export KEY_NAME="Example Key"
    export KEY_CN="example.com"

    Это значения по умолчанию при генерации сертификата и его подписи, их можно будет изменить непосредственно при генерации

  3. Отредактировать /etc/openvpn/easy-rsa/openssl.cnf , если нужно что-то поменять:
    # cp /etc/openvpn/easy-rsa/openssl-10.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
    # vi /etc/openvpn/easy-rsa/openssl.cnf
  4. Сгенерировать CA — корневой сертификат, которым будут подписаны другие:
    # cd /etc/openvpn/easy-rsa
    # source ./vars
    # ./clean-all
    # ./build-ca
  5. Cгенерировать Diffie Hellman ключ, это займет некоторое время, поэтому можно пока проверить новости безопасности :
    # ./build-dh
  6. Сгенерировать сертификат для роли «сервер» (nsCertType выставляется в server, что проверяется на стороне клиента директивой «remote-cert-tls server» для предотвращения man-in-the-middle)
    # ./build-key-server server
  7. Скопировать полученные ключи в директорию openvpn:
    # cp dh2048.pem ca.crt server.crt server.key /etc/openvpn
  8. Сгенерировать клиентский сертификат можно так (client — это имя для клиента может быть любым):
    # cd /etc/openvpn/easy-rsa
    # ./build-key client
  9. Передать ca.crt client.key client.crt на сторону клиента (client.key — по защищенному каналу)
  10. Повторить пункты 8 и 9 для нужного количества клиентов.

Если вам нужно отозвать скомпрометированный сертификат (в примере client):

# cd /etc/openvpn/easy-rsa
# source ./vars
# revoke-full client

Посмотреть Certificate Revocation List:

# ./list-crl


Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

2 мыслей про “Создание сертификатов для OpenVPN на примере CentOS

    • admin От автора

      Данная инструкция предназначена для тех кому нужно быстро поднять OpenVPN с простой конфигурацией. Easy-rsa — набор скриптов внутри которых можно посмотреть как использовать openssl для разных действий.