Вы здесь

OpenVPN

Создание ключей с помощью EasyRSA

Для того, чтобы администратору не пришлось вникать в подробности работы с openssl, вместе с OpenVPN поставляется набор скриптов для генерации ключей — EasyRSA.

Для работы OpenVPN с авторизацией по ключам требуется не менее семи файлов.

Серверная константа для Diffie-Hellmandh1024.pem. Создается командой build-dh.

Ключ и самоподписанный сертификат удостоверяющего центра (CA) — ca.key, ca.crt. Создаются командой build-ca.

Ключ сервера и сертификат ключа сервера, подписанный ca.key, — server.key, server.crt. Создаются командой build-key-server.

Ключи и сертификаты для клиентов. Сертификаты подписаны ca.key. Создаются командой build-key или build-key-pass.

В процессе работы скриптов создаются файлы запросов на сертификат с расширением .csr. Они не нужны и их можно спокойно стереть.

Конфигурация ключей на сервере:

dh /etc/openvpn/dh1024.pem
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key

Конфигурация ключей на клиенте:

ca ca.crt
cert client.crt
key client.key

Сертификат удостоверяющего центра ca.crt обычно один и тот же, что на сервере, что на клиенте. Он используется для верификации целостности собственного ключа (проверка, что ключ соответствует сертификату и что сертификат подписан CA) и для проверки сертификата партнера.

Если заменить (испортить) ca.crt то при попытке соединения выдается ошибка VERIFY ERROR: depth=0, error=unable to get local issuer certificate

Окончание времени жизни сертификатов

С настройками по умолчанию EasyRSA генерирует сертификаты на десять лет. Через десять лет после выпуска сертификата CA срок его действия закончится на сервере и у всех клиентов. Кроме того, поскольку сертификат сервера обычно генерируют сразу вслед за созданием CA, в то же время закончится и срок действия сертификата сервера. При попытке подключиться клиентам выдается ошибка VERIFY ERROR: depth=0, error=certificate has expired: CN=server, serial=123

Для решения проблемы надо средствами openssl перевыпустить сертификат CA. Новый сертификат CA надо будет установить на сервере и у всех клиентов.

Генерация самоподписанного сертификата CA с использованием атрибутов из старого сертификата:

mv ca.crt old-ca.crt
openssl x509 -in old-ca.crt -days 3650 -out ca.crt -signkey ca.key

При завершении их срока действия сертификат сервера можно попробовать либо перевыпустить средствами openssl сертификат для имеющегося серверного ключа, либо сгенерировать новые ключ и сертификат средствами EasyRSA. При генерации нового ключа могут быть проблемы, поскольку удостоверяющий центр EasyRSA ведет учет выпущенных ключей и по умолчанию отказываться генерировать новый ключ, пока не отозван старый. Те же проблемы возникнут при завершения срока действия сертификатов клиентов. Чтобы остаться в рамках использования только EasyRSA можно поступить следующим способом:

После истечения срока сертификата CA можно создать новый CA. В этом случае необходимо перевыпустить новый сертификат для старого CA, как описано выше, после чего средствами EasyRSA создать новый CA и в дальнейшем использовать составной сертификат ca.crt, который будет содержать сертификаты старого и нового CA. В этом случае по мере устаревания сертификатов клиентов и серверов им просто выпускаются новые ключи в новом CA. Старые ключи в таком сценарии отзывать не надо, поскольку новый CA про них ничего не знает, а по истечению срока действия сертификата они автоматически станут недействительными.

Обновление сертификата средствами openssl:

openssl x509 -x509toreq -in server.crt -signkey ca.key -out server.csr
openssl x509 -in server.csr -out server.crt -signkey ca.key -req -days 3650

Яндекс.Метрика