Инструкция поможет быстро сгенерировать сертификаты для работы OpenVPN
Если уже установлен пакет 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/2.0/* /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-10.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
Спасибо за пост. Смотрел генерацию ключей здесь — http://sysadm.pp.ua/linux/shifrovanie/openvpn-easy-rsa.html . Нехватает CRL листов с примером отзвыа OpenVPN сертификата… Подскажите, как генерировать те же ключи используя openSSL ?
Данная инструкция предназначена для тех кому нужно быстро поднять OpenVPN с простой конфигурацией. Easy-rsa — набор скриптов внутри которых можно посмотреть как использовать openssl для разных действий.