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

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


linux:openvpn:update_certificates

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:openvpn:update_certificates [2025/04/25 00:28]
werwolf
linux:openvpn:update_certificates [2025/04/25 00:45] (текущий)
werwolf
Строка 19: Строка 19:
   *   inux: sudo apt install openvpn → sudo openvpn client.ovpn   *   inux: sudo apt install openvpn → sudo openvpn client.ovpn
   *   ​Android/​iOS:​ Приложение OpenVPN Connect (импортируйте файл).   *   ​Android/​iOS:​ Приложение OpenVPN Connect (импортируйте файл).
 +
 +==== Если сертификат OpenVPN протух (истек срок действия),​ его нужно перегенерировать ====
 +
 +===  Проверка срока действия сертификата ===
 +<code bash>
 +# Если сертификат встроен в .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
 +</​code>​
 +
 +Вывод:
 +<code bash>
 +notBefore=Apr 24 00:00:00 2023 GMT  ​
 +notAfter=Apr 24 00:00:00 2024 GMT  ​
 +</​code>​
 +
 +Если notAfter в прошлом — сертификат просрочен.
 +
 +=== Генерация нового сертификата ===
 +
 +1. Перейдите в папку EasyRSA (обычно /​etc/​openvpn/​easy-rsa/​ или /​usr/​share/​easy-rsa/​):​
 +
 +<code bash>
 +cd /​etc/​openvpn/​easy-rsa/​
 +</​code>​
 +
 +2. Инициализируйте PKI (если нужно) и обновите vars:
 +<code bash>
 +./easyrsa init-pki
 +source vars  # (если файл есть)
 +</​code>​
 +
 +3. Сгенерируйте новый сертификат клиента (замените client1 на имя клиента):​
 +
 +<code bash>
 +./easyrsa build-client-full client1 nopass ​ # без пароля
 +# или с паролем:​
 +./easyrsa build-client-full client1
 +</​code>​
 +
 +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-файл:​
 +
 +<code bash>
 +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
 +</​code>​
 +
 +6. Скопируйте client1.ovpn на клиентское устройство.
 +
 +=== Пример скрипта make_ovpn.sh ===
 +
 +<code bash>
 +#!/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 создан!"​
 +</​code>​
 +
 +Как запустить?​
 +<code bash>
 +chmod +x make_ovpn.sh
 +sudo ./​make_ovpn.sh
 +</​code>​
 +
 +После этого /​etc/​openvpn/​client/​client1.ovpn будет готов к использованию.
 +
 +=====Как перевыпустить сертификат сервера OpenVPN =====
 +
 +Если у вас есть рабочий CA (ca.crt и ca.key), но нужно перевыпустить сертификат сервера (например,​ из-за истечения срока действия или компрометации ключа),​ выполните следующие шаги:
 +
 +1. Перейдите в папку Easy-RSA
 +<code bash>
 +cd /​etc/​openvpn/​easy-rsa/ ​ # или /​usr/​share/​easy-rsa/​
 +</​code>​
 +2. Отзовите старый сертификат сервера (если нужно)
 +<code bash>
 +./easyrsa revoke "​server" ​ # "​server"​ — имя сертификата (обычно `server`)
 +./easyrsa gen-crl ​         # Обновить список отозванных сертификатов (CRL)
 +</​code>​
 +→ Это нужно, если старый сертификат был скомпрометирован (если просто истёк срок — можно пропустить).
 +
 +3. Перевыпустите сертификат сервера
 +<code bash>
 +./easyrsa build-server-full "​server"​ nopass ​ # "​server"​ — имя сертификата
 +</​code>​
 +→ Если нужен пароль для сертификата,​ уберите nopass.
 +→ Новые файлы создадутся в:
 +  * pki/​issued/​server.crt — новый сертификат,​
 +  * pki/​private/​server.key — новый приватный ключ.
 +
 +4. Обновите конфиг OpenVPN
 +
 +Замените старые сертификаты в /​etc/​openvpn/​server.conf (или где лежит ваш конфиг):​
 +
 +<code bash>
 +cert /​etc/​openvpn/​easy-rsa/​pki/​issued/​server.crt
 +key /​etc/​openvpn/​easy-rsa/​pki/​private/​server.key
 +</​code>​
 +
 +Или, если сертификаты встроены прямо в .conf:
 +<code bash>
 +sudo nano /​etc/​openvpn/​server.conf
 +</​code>​
 +
 +Замените блоки:
 +<code bash>
 +<​cert>​
 +-----BEGIN CERTIFICATE-----
 +... (новый сертификат из pki/​issued/​server.crt)
 +-----END CERTIFICATE-----
 +</​cert>​
 +
 +<key>
 +-----BEGIN PRIVATE KEY-----
 +... (новый ключ из pki/​private/​server.key)
 +-----END PRIVATE KEY-----
 +</​key>​
 +</​code>​
 +
 +5. Перезапустите OpenVPN
 +<code bash>
 +sudo systemctl restart openvpn-server@server ​ # Для systemd
 +# ИЛИ
 +sudo service openvpn restart ​                # Для SysVinit
 +</​code>​
 +
 +6. Проверьте,​ что сертификат обновлён
 +<code bash>
 +openssl x509 -in /​etc/​openvpn/​easy-rsa/​pki/​issued/​server.crt -noout -dates
 +</​code>​
 +Вывод должен показывать актуальные даты:
 +
 +<code bash>
 +notBefore=Jun 25 00:00:00 2024 GMT  ​
 +notAfter=Jun 25 00:00:00 2025 GMT  ​
 +</​code>​
 +
 +
  
linux/openvpn/update_certificates.1745530092.txt.gz · Последние изменения: 2025/04/25 00:28 — werwolf