Product SiteDocumentation Site

78.2. Настройка в командной строке

78.2.1. Создание ключей для OpenVPN туннеля средствами утилиты openssl

Для генерации всех необходимых ключей и сертификатов необходимо выполнить следующие действия:
  1. Изменить значение параметра policy в файле /var/lib/ssl/openssl.cnf для возможности подписывать любые сертификаты:
    policy = policy_anything
    
  2. Создать каталоги:
    # mkdir -p /root/CA/demoCA
    # cd /root/CA
    # mkdir -p ./demoCA/newcerts
    
    Создать файл базы с действующими и отозванными сертификатами:
    # touch ./demoCA/index.txt
    
    Создать файл индекса для базы ключей и сертификатов:
    # echo '01' > ./demoCA/serial
    
    Создать файл индекса для базы отозванных сертификатов:
    # echo '01' > ./demoCA/crlnumber
    
  3. Создать «самоподписанный» сертификат my-ca.crt и закрытый ключ my-ca.pem, которыми будут заверяться/подписываться ключи и сертификаты клиентов, желающих подключиться к серверу, с помощью следующей команды:
    # openssl req -new -x509 -keyout my-ca.pem -out my-ca.crt
    
    Ввести пароль для закрытого ключа и ответить на запросы о владельце ключа.
  4. Создать пару «ключ-сертификат» для сервера и каждого клиента, желающего подключиться к серверу. Для этого, сгенерировать ключ и запрос на сертификат для сервера:
    # openssl req -new -nodes -keyout server.pem -out server.crs
    
    Подписать запрос на сертификат своим «самоподписанным» my-ca.crt сертификатом и ключом my-ca.pem с помощью следующей команды:
    # openssl ca -cert my-ca.crt -keyfile my-ca.pem -days 3650 -in server.crs -out server.crt
    
    Сгенерировать ключ и запрос на сертификат для клиента:
    # openssl req -new -nodes -keyout client.pem -out client.crs
    
    Подписать запрос на сертификат своим my-ca.crt сертификатом и ключом my-ca.pem:
    # openssl ca -cert my-ca.crt -keyfile my-ca.pem -days 365 -in client.crs -out client.crt
    
  5. Задать параметры Диффи-Хеллмана для сервера:
    # openssl dhparam -out server.dh 2048
    
  6. Разместить ключи и сертификаты в каталогах сервера и клиента следующим образом:
    • my-ca.pem — только для подписи сертификатов (лучше хранить на отдельном от OpenVPN сервера компьютере);
    • my-ca.crt, server.crt, server.dh, server.pem — для сервера OpenVPN;
    • my-ca.crt, client.crt, client.pem — для клиента OpenVPN.
  7. Для новых клиентов создать новые ключи и отдать комплектом my-ca.crt, новый_сертификат.crt, новый_ключ.pem.
Для создания списка отзыва сертификатов необходимо выполнить следующие действия:
  1. Выполнить следующую команду:
    # openssl ca -cert my-ca.crt -keyfile my-ca.pem -gencrl -out crl.pem
    
  2. Отозвать сертификат user_1.crt:
    # openssl ca -cert my-ca.crt -keyfile my-ca.pem -revoke user_1.crt -out crl.pem
    
  3. Обновить список (обязательно после каждого отзыва сертификата):
    # openssl ca -cert my-ca.crt -keyfile my-ca.pem -gencrl -out crl.pem
    
  4. Просмотреть crl.pem:
    # openssl crl -noout -text -in crl.pem
    
  5. Поместить файл crl.pem в каталог /var/lib/openvpn.