вторник, 12 мая 2020 г.

Установка stunnel для apache вебсервера 1С:Предпритие 8.3 Ubuntu 20.04 с авторизацией


 Установка  stunnel4 на сервере Ubuntu 20.04:

sudo apt install stunnel4 -y

Нам нужны пары сертификат/ключ для сервера и каждого клиента.
Для сервера:
sudo openssl genrsa -out /etc/stunnel/server-key.pem 2048
sudo openssl req -new -x509 -key /etc/stunnel/server-key.pem -out /etc/stunnel/server-cert.pem -days 36500
##sudo su -c "cat /etc/stunnel/key.pem /etc/stunnel/cert.pem >> /etc/stunnel/stunnel.pem" 

Создадим пару для клиента client01:

sudo openssl genrsa -out /etc/stunnel/client01-key.pem 2048
sudo openssl req -new -x509 -key /etc/stunnel/client01-key.pem -out /etc/stunnel/client01-cert.pem -days 36500
sudo su -c "cat /etc/stunnel/client01-cert.pem >> /etc/stunnel/clients.pem"
 

Файлы client01-cert.pem  client01-key.pem  server-cert.pem
скопируем на машину с клиентом client01 (windows)

Создадим еще пару для клиента client02:

sudo openssl genrsa -out /etc/stunnel/client02-key.pem 2048
sudo openssl req -new -x509 -key /etc/stunnel/client02-key.pem -out /etc/stunnel/client02-cert.pem -days 36500
sudo su -c "cat /etc/stunnel/client02-cert.pem >> /etc/stunnel/clients.pem"

И т.д.

На сервере настриваем (ниже):accept = 4443 - порт на сервере который нужно открыть во внешнюю сеть или пробросить
connect = 127.0.0.1:80 - 80 порт вебсервера от которого строим туннель tls

sudo nano /etc/stunnel/stunnel.conf

chroot = /var/lib/stunnel4
pid = /stunnel4.pid
output = /stunnel.log
setuid = stunnel4
setgid = stunnel4
# performance tunning
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
;Отключим отладочные режимы - 0
;debug = 7
#cert = /etc/stunnel/stunnel.pem
; Проверка сертификата. 0 - не проверять, 1 - проверять при наличии, 2 - проверять всегда, ...
verify = 2
cert = /etc/stunnel/server-cert.pem
key = /etc/stunnel/server-key.pem
CAfile = /etc/stunnel/clients.pem
#Полностью отключим уязвимые протоколы SSL версии 2 и 3.
options = NO_SSLv2
options = NO_SSLv3
options = NO_TLSv1
options = NO_TLSv1.1
ciphers = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384

[apache]
accept = 4443
connect = 127.0.0.1:80

Сохранить

Штатный запуск:

sudo su -c "echo 'ENABLED=1' >> /etc/default/stunnel4"

Можно проверить:

cat /etc/default/stunnel4
.....
ENABLED=1
==========================================
Можно просто:
sudo reboot
==========================================
или без перезагрузки:
sudo systemctl enable stunnel4.service
sudo systemctl start stunnel4.service
==========================================


sudo systemctl status stunnel4.service


Лог в chroot  /var/lib/stunnel4/stunnel.log

Установка  stunnel4 на клиенте (Windows):


---------------------------------------------------------------------------------------------------------------------------
Установка stunnel под windows
download stunnel
stunnel-5.56-win64-installer.exe
Все версии 32 и 64 здесь

1. Установить  stunnel-5.56-win64-installer.exe
(для 32 бит   stunnel-5.49-win32-installer.exe )


Подключаться к 1с будем  127.0.0.1:8080

К серверу  по внешнему ip 192.168.1.233:4443 через интернет.

2. Скопировать с сервера сертификат:
/etc/stunnel/stunnel.pem
в 
c:\Program Files (x86)\stunnel\config\stunnel.pem

3. Настройить stunnel.conf
(все строки можно удалить)

c:\Program Files (x86)\stunnel\config\stunnel.conf

cert = client01-cert.pem
key = client01-key.pem
CAfile = server-cert.pem
client = yes
; Проверка сертификата. 0 - не проверять, 1 - проверять при наличии, 2 - проверять всегда, ...
verify = 2
[apache]
accept = 127.0.0.1:8080
connect = 192.168.1.233:4443

Сохранить.

Есть ярлык, установить службу:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install

Есть ярлык, запустить службу:

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -start


Проверить:
http://localhost:8080/demo/ru_RU/ 


Прочие команды.

"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -start
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -stop
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -install
"C:\Program Files (x86)\stunnel\bin\stunnel.exe" -uninstall

==========================================
Альтернативный вариант с systemd не делаем!

sudo nano /lib/systemd/system/stunnel.service


[Unit]
Description=SSL tunnel
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=stunnel.target

[Service]
Type=forking
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
ExecStop=/usr/bin/pkill stunnel
WorkingDirectory=/etc/stunnel
TimeoutSec=600
Restart=always
PrivateTmp=false

Сохранить.


sudo systemctl enable stunnel.service
sudo systemctl start stunnel.service
sudo systemctl status stunnel.service

Комментариев нет:

Отправить комментарий