Инструменты пользователя

Инструменты сайта


linux:openvpn:update_certificates

Перевыпуск просроченного сертификата на OpenVPN-сервере

Если вы настраиваете свой VPN-сервер, конфиг создается при настройке сервера.

Где искать на сервере:

# Для OpenVPN, установленного вручную:
/etc/openvpn/client/client.ovpn    # или /etc/openvpn/  
 
/etc/openvpn/easy-rsa/pki/issued/  # Сертификаты  
/etc/openvpn/easy-rsa/pki/private/ # Ключи  

Как использовать .ovpn-файл?

  1. Скачайте файл (например, client.ovpn).
  2. Установите OpenVPN-клиент:
  • Windows: OpenVPN GUI
  • inux: sudo apt install openvpn → sudo openvpn client.ovpn
  • Android/iOS: Приложение OpenVPN Connect (импортируйте файл).

Если сертификат OpenVPN протух (истек срок действия), его нужно перегенерировать

Проверка срока действия сертификата

# Если сертификат встроен в .ovpn:
grep -A 20 "<cert>" /etc/openvpn/client/client.ovpn | openssl x509 -noout -dates
 
# Если сертификат лежит отдельно (например, client.crt):
openssl x509 -in /etc/openvpn/client/client.crt -noout -dates

Вывод:

notBefore=Apr 24 00:00:00 2023 GMT  
notAfter=Apr 24 00:00:00 2024 GMT  

Если notAfter в прошлом — сертификат просрочен.

Генерация нового сертификата

1. Перейдите в папку EasyRSA (обычно /etc/openvpn/easy-rsa/ или /usr/share/easy-rsa/):

cd /etc/openvpn/easy-rsa/

2. Инициализируйте PKI (если нужно) и обновите vars:

./easyrsa init-pki
source vars  # (если файл есть)

3. Сгенерируйте новый сертификат клиента (замените client1 на имя клиента):

./easyrsa build-client-full client1 nopass  # без пароля
# или с паролем:
./easyrsa build-client-full client1

4. Новые файлы появятся в:

  • Сертификат: /etc/openvpn/easy-rsa/pki/issued/client1.crt
  • Ключ: /etc/openvpn/easy-rsa/pki/private/client1.key
  • CA-сертификат: /etc/openvpn/easy-rsa/pki/ca.crt

5. Соберите новый .ovpn-файл:

cat > /etc/openvpn/client1.ovpn <<EOF
client
dev tun
proto udp4
remote 185.17.120.226 1194
resolv-retry infinite
nobind
keepalive 10 120
comp-lzo
cipher AES-256-GCM
persist-key
persist-tun
verb 3
<ca>
$(cat /etc/openvpn/easy-rsa/pki/ca.crt)
</ca>
<cert>
$(cat /etc/openvpn/easy-rsa/pki/issued/client1.crt)
</cert>
<key>
$(cat /etc/openvpn/easy-rsa/pki/private/client1.key)
</key>
EOF

6. Скопируйте client1.ovpn на клиентское устройство.

Пример скрипта make_ovpn.sh

#!/bin/bash
 
CLIENT_NAME="client1"  # Имя клиента
SERVER_IP="123.123.123.123"  # IP сервера
PORT="1194"  # Порт OpenVPN
 
# Переходим в папку EasyRSA
cd /etc/openvpn/easy-rsa/
 
# Генерируем сертификат (если ещё не создан)
./easyrsa build-client-full $CLIENT_NAME nopass
 
# Создаём .ovpn-файл
cat > /etc/openvpn/client/$CLIENT_NAME.ovpn <<EOF
client
dev tun
proto udp
remote $SERVER_IP $PORT
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256
comp-lzo no
verb 3
 
<ca>
$(cat pki/ca.crt)
</ca>
 
<cert>
$(cat pki/issued/$CLIENT_NAME.crt)
</cert>
 
<key>
$(cat pki/private/$CLIENT_NAME.key)
</key>
 
tls-crypt /etc/openvpn/server/tls-crypt.key  # Если используется tls-crypt
EOF
 
echo "Файл /etc/openvpn/client/$CLIENT_NAME.ovpn создан!"

Как запустить?

chmod +x make_ovpn.sh
sudo ./make_ovpn.sh

После этого /etc/openvpn/client/client1.ovpn будет готов к использованию.

Как перевыпустить сертификат сервера OpenVPN

Если у вас есть рабочий CA (ca.crt и ca.key), но нужно перевыпустить сертификат сервера (например, из-за истечения срока действия или компрометации ключа), выполните следующие шаги:

1. Перейдите в папку Easy-RSA

cd /etc/openvpn/easy-rsa/  # или /usr/share/easy-rsa/

2. Отзовите старый сертификат сервера (если нужно)

./easyrsa revoke "server"  # "server" — имя сертификата (обычно `server`)
./easyrsa gen-crl          # Обновить список отозванных сертификатов (CRL)

→ Это нужно, если старый сертификат был скомпрометирован (если просто истёк срок — можно пропустить).

3. Перевыпустите сертификат сервера

./easyrsa build-server-full "server" nopass  # "server" — имя сертификата

→ Если нужен пароль для сертификата, уберите nopass. → Новые файлы создадутся в:

  • pki/issued/server.crt — новый сертификат,
  • pki/private/server.key — новый приватный ключ.

4. Обновите конфиг OpenVPN

Замените старые сертификаты в /etc/openvpn/server.conf (или где лежит ваш конфиг):

cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key

Или, если сертификаты встроены прямо в .conf:

sudo nano /etc/openvpn/server.conf

Замените блоки:

<cert>
-----BEGIN CERTIFICATE-----
... (новый сертификат из pki/issued/server.crt)
-----END CERTIFICATE-----
</cert>
 
<key>
-----BEGIN PRIVATE KEY-----
... (новый ключ из pki/private/server.key)
-----END PRIVATE KEY-----
</key>

5. Перезапустите OpenVPN

sudo systemctl restart openvpn-server@server  # Для systemd
# ИЛИ
sudo service openvpn restart                 # Для SysVinit

6. Проверьте, что сертификат обновлён

openssl x509 -in /etc/openvpn/easy-rsa/pki/issued/server.crt -noout -dates

Вывод должен показывать актуальные даты:

notBefore=Jun 25 00:00:00 2024 GMT  
notAfter=Jun 25 00:00:00 2025 GMT  
linux/openvpn/update_certificates.txt · Последние изменения: 2025/04/25 00:45 — werwolf