Создание сертификатов OpenVPN

Материал из darklurker wiki
Перейти к: навигация, поиск

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

yum -y install easy-rsa

Скопировать скрипты easy-rsa в папку с openvpn:

mkdir -p /etc/openvpn/easy-rsa/keys
cp -rf /usr/share/easy-rsa/* /etc/openvpn/easy-rsa

Отредактировать файл /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"

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

Отредактировать /etc/openvpn/easy-rsa/openssl.cnf , если нужно что-то поменять:

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
vi /etc/openvpn/easy-rsa/openssl.cnf

Сгенерировать CA — корневой сертификат, которым будут подписаны другие:

cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca

Cгенерировать Diffie Hellman ключ, это займет некоторое время, поэтому можно пока проверить новости безопасности :

./build-dh

Сгенерировать сертификат для роли «сервер» (nsCertType выставляется в server, что проверяется на стороне клиента директивой «remote-cert-tls server» для предотвращения man-in-the-middle)

./build-key-server server

Скопировать полученные ключи в директорию openvpn:

cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

Сгенерировать клиентский сертификат можно так (client — это имя для клиента может быть любым):

cd /etc/openvpn/easy-rsa
./build-key client

Передать ca.crt client.key client.crt на сторону клиента (client.key — по защищенному каналу) Повторить пункты 8 и 9 для нужного количества клиентов.




Отзыв скомпрометированного сертификата (в примере client):

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

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

./list-crl