вторник, 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

воскресенье, 10 мая 2020 г.

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

Stunnel + OpenVPN Server on Ubuntu 18.04
Авторизация для stunnel с помощью сертификатов openvpn

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

sudo apt install stunnel4 -y
sudo openssl genrsa -out /etc/stunnel/key.pem 2048
sudo openssl req -new -x509 -key /etc/stunnel/key.pem -out /etc/stunnel/cert.pem -days 3650
sudo su -c "cat /etc/stunnel/key.pem /etc/stunnel/cert.pem >> /etc/stunnel/stunnel.pem" 

Фйайл /etc/stunnel/stunnel.pem скачаваем для установки на клиента

sudo chmod 600 /etc/stunnel/stunnel.pem
sudo rm /etc/stunnel/key.pem  /etc/stunnel/cert.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
#Полностью отключим уязвимые протоколы 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 = stunnel.pem
client = yes
[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

==========================================

суббота, 9 мая 2020 г.

Файловый backup 1c

1c_backup.bat

@echo off
REM скрипт архивирующий папку с базами 1с файлы *.1CD
REM BASEDIR путь к папке где лежат базы 1С , если русскими буквами имя папки DOS dir /x
REM SET BASEDIR=D:\1CBases
REM CALL c:\Apache24\bin\httpd.exe -k stop
SET BASEDIR=c:\V8
REM BACKUPDIR путь к папке куда будем складывать backup
SET BACKUPDIR=f:\backup
REM удаление архивов старше DAY дней
SET DAY=5
REM del /F /Q "%BACKUPDIR%"\
REM forfiles /p %BACKUPDIR% /m *.7z /s /d -%DAY% /c "cmd /c del @path /q"
forfiles /p %BACKUPDIR% /m * /s /d -%DAY% /c "cmd /c del @path /q"
REM PASSWORD пароль для архива
REM SET PASSWORD=VZZETcB1eItOc4HU1RQljWqSeymsM6ZVenvXObU1F5oKM3GLTr96K
REM пароль до 20 символов совместим с rar
SET PASSWORD=VZZETcB1eI
REM NAME имя файла с архивом
SET NAME=backup
SET datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%
SET datetimef=%datetimef: =0%
SET FILENAME=%BACKUPDIR%\%NAME%_%datetimef%.7z
SET LOG=%BACKUPDIR%\%NAME%_%datetimef%.log
REM CALL c:\7-zip\7za.exe a  %FILENAME% -mmt2 -mx1 -t7z -v2000m -bso1 %BASEDIR%\*\*.1CD -p%PASSWORD% >%LOG% 2>&1
CALL c:\7-zip\7za.exe a  %FILENAME% -mmt2 -mx1 -t7z -v2000m -bso1 %BASEDIR%\*\*.1CD >%LOG% 2>&1
REM CALL c:\Apache24\bin\httpd.exe -k start
REM cd f:\rclone
REM  rclone copy f:/backup webdav:backup_1c --progress --config rclone.conf




rclone sync f:/backup webdav:backup_1c --progress --config rclone.conf

rclone copy f:/backup webdav:backup_1c --progress --config rclone.conf

среда, 6 мая 2020 г.

Crypto-Pro CSP Release Ver:5.0. cryptcp.x64.exe windows

Отсоединенная подпись
cryptcp.x64.exe -sign -f sert.cer -der "Договор для подписи.doc"

cryptcp.x64.exe -sign -uMy -dn mail@example.com -der "Договор для подписи.doc" -detached

Присоединенная подпись

cryptcp.x64.exe -sign -f sert.cer -der "Договор для подписи.doc" "Договор для подписи.doc.p7s"

cryptcp.x64.exe -sign -uMy -dn mail@example.com -der "Договор для подписи.doc"

Проверка присоединенной подписи

cryptcp.x64.exe -verify "Договор для подписи.doc.sig"



bat файл для подписи

REM @echo off
REM Положить cryptcp.x64.exe c:\Apache24\bin\ (перечислено в PATH)
CD %~dp0
REM сryptcp.x64.exe -sign -uMy -dn mail@example.com -pin 12345 -der %1 -detached >> nul
REM cryptcp.x64.exe -sign -uMy -dn mail@example.com -pin 12345 -der %1 -detached
echo %1.sig
cryptcp.x64.exe -sign -uMy -dn mail@example.com -pin 12345 -der %1 %1.sig -detached


C:\Program Files\Crypto Pro\CSP>csptest -keyset -enum_cont -fqcn -verifyc
CSP (Type:80) v5.0.10005 KC1 Release Ver:5.0.11732 OS:Windows CPU:AMD64 FastCode:READY:DISABLED (RSA; ).
AcquireContext: OK. HCRYPTPROV: 198451600
\\.\Aktiv Rutoken lite 0\vu2020

воскресенье, 3 мая 2020 г.

Установка Apache с возможностью запуска нескольких экземпляров для разных версий сервера 1с

1. Установка сервера 1с на нестандартные порты

#Правим build.sh для установки web компоненты

nano build.sh

После строк:

mkdir /tmp/1ctmp/tmp
dpkg-deb -x /tmp/1ctmp/1c-enterprise83-common_*_amd64.deb /tmp/1ctmp/tmp
dpkg-deb -x 1c-enterprise83-server_*_amd64.deb /tmp/1ctmp/tmp

Добавить:

dpkg-deb -x 1c-enterprise83-ws_*_amd64.deb /tmp/1ctmp/tmp

Сохранить.

2. Устанавливаем  сервер 1с на нестандартные порты с web компонентой

Предположим что установлен дополнительный сервер
имя u2004 на порту 1741
u2004:1741
demo - имя базы в кластере 1с (нужно создать, вместо demo свое имя)


$ hostname
u2004

sudo apt-get install apache2 -y

#Описание:
cat /usr/share/doc/apache2/README.multiple-instances

#Подключаем worker

sudo apachectl -V | grep -i mpm
#Server MPM:     event

#Отключаем  mpm_event
sudo a2dismod mpm_event

#Подключаем worker 
sudo a2enmod mpm_worker

sudo service apache2 restart

sudo apachectl -V | grep -i mpm
#Server MPM:     worker

#файлы /etc/apache2/ будут использоваться в дальнейшем в качестве шаблона для
#для других экземпляров, поэтому

#Остановим сервер:

sudo systemctl stop apache2

#Выключим автозапуск:

sudo systemctl disable apache2


#Создадим 1 экземпляр apache web1


sudo sh /usr/share/doc/apache2/examples/setup-instance web1

#Запустим:
sudo systemctl start apache2@web1

#Поставим автозапуск:
sudo systemctl enable apache2@web1

Проверим работу:
http://u2004 

#Подключаем базу demo в кластере на не стандартных портах 1с u2004:1741

#Создаем директорию для vrd-файла:
sudo mkdir -p /var/www/ib/demo

#А также файл конфигурации Apache:

sudo touch /etc/apache2-web1/conf-available/demo.conf

#Переходим в каталог с утилитой публикации веб-клиента (нестандартное расположение для того сервера, который установили):

cd /opt/1C/v8.3.16.1148/x86_64/


demo - имя базы в кластере 1с

Запускаем утилиту публикации базы 1с:
sudo ./webinst -apache24 -wsdir demo -dir '/var/www/ib/demo' -connstr 'Srvr="u2004:1741";Ref="demo";' -confPath /etc/apache2-web1/conf-available/demo.conf

Где /var/www/ib/demo - директория где будет создан vrd-файл,  

demo - имя ИБ,

u2004:1741 - адрес сервера 1С:Предпрятие на нестандартном порту 1741

/etc/apache2-web1/conf-available/demo.conf - путь до конфигурационного файла Apache.

#Публикация выполнена

#Проверяем модуль wsap24.so должен быть правильно расположен, в данном случае #нестандартный путь:
 
cat /etc/apache2-web1/conf-available/demo.conf
#LoadModule _1cws_module "/opt/1C/v8.3.16.1148/x86_64/wsap24.so"



#Подключаем конфигурацию:
sudo a2enconf-web1 demo

#Отключаем конфигурацию:
#sudo a2disconf-web1 demo #не сейчас

#Перезагрузка Apache:
sudo systemctl reload apache2@web1.service

sudo systemctl restart apache2@web1.service

sudo systemctl status apache2@web1.service


#Смотрим:

http://u2004/demo/ru_RU/

grep "_1cws_module" -rI /etc/apache2-web1
/etc/apache2-web1/conf-available/demo.conf:LoadModule _1cws_module "/opt/1C/v8.3.16.1148/x86_64/ wsap24.so"


По аналогии можем подключать другие базы.
Но перед запуском следующего экзепляра не забудьте
изменить порты.