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

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


linux:openvpn:update_certificates

Различия

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

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

Следующая версия
Предыдущая версия
linux:openvpn:update_certificates [2025/04/25 00:27]
werwolf создано
linux:openvpn:update_certificates [2025/04/25 00:45] (текущий)
werwolf
Строка 16: Строка 16:
   - Скачайте файл (например,​ client.ovpn).   - Скачайте файл (например,​ client.ovpn).
   - Установите OpenVPN-клиент:​   - Установите OpenVPN-клиент:​
-  *   Windows: OpenVPN GUI +  *   ​Windows:​ OpenVPN GUI 
-  *   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.1745530071.txt.gz · Последние изменения: 2025/04/25 00:27 — werwolf