Установка туннеля с ГИС ЖКХ под Linux

Задача установить защищенный туннель с ГИС ЖКХ под Astra Linux.

Решение:

Сначала скопируем с токена сертификат в формате pfx. Для этого можно воспользоваться утилитой P12FromGostCSP (Windows). Под Linux тоже как-то можно, но как- нужно гуглить. Мне предоставили уже готовый файл.

Далее нужно установить крипто-про CSP с пакетом stunnel. Зайдя в крипто про, во вкладке «сертификаты» необходимо установить корневые сертификаты с https://my.dom.gosuslugi.ru/ и установить сертификат из файла psk.

Для настройки конфигурационного файла stunnel, нужно из файла формата pfx получить файлы key и crt

crt и pem:

openssl pkcs12 -in file.pfx -clcerts -nokeys -out public.crt
openssl x509 -in public.crt -out public.pem -outform PEM

key:

openssl pkcs12 -in SSK_obezl_3.pfx -nocerts -out private.key

Лично у меня на этом месте выскочила ошибка:

Enter Import Password:
Error outputting keys and certificates
124867336299712:error:06074079:digital envelope routines:EVP_PBE_CipherInit:unknown pbe algorithm:../crypto/evp/evp_pbe.c:95:TYPE=1.2.840.113549.1.12.1.80
124867336299712:error:23077073:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 algor cipherinit error:../crypto/pkcs12/p12_decr.c:41:
124867336299712:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:../crypto/pkcs12/p12_decr.c:94:

Которую я так и не победил, но тем не менее файл сформировался.

Далее необходимо настроить конфигурационный файл туннеля. У меня он получился вида:

pid=/home/vasya/stunnel/stunnel_cli.pid
output=/home/vasya/stunnel/t.log
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 7
[https]
client = yes
accept=localhost:8080
connect = api.dom.gosuslugi.ru:443
cert=/home/vasya/stunnel/public.pem
CAFile=/home/vasya/stunnel/CA-PPAK_2023.pem
key=/home/vasya/stunnel/private.key
verify=0

Файл CA-PPAK_2023.pem взял из архива «ГИС ЖКХ_Интеграция v.14.8.0.2.zip» с документацией скачанного с сайта https://my.dom.gosuslugi.ru/

И пробуем запустить туннель:

opt/cprocsp/sbin/amd64/stunnel_thread /home/vasya/stunnel/stunnel_run.conf

Логи будут писаться в файл t.log. Если всё хорошо, и в логах ошибок нет, то можно попробовать выполнить в браузере запрос вида:

http://127.0.0.1:8080/ext-bus-debt-service/services/DebtAsync

От ГИС ЖКХ придет что-то вроде:

<env:Envelope xmlns:ns6="http://dom.gosuslugi.ru/schema/integration/individual-registry-base/" xmlns:ns5="http://dom.gosuslugi.ru/schema/integration/account-base/" xmlns:ns8="http://dom.gosuslugi.ru/schema/integration/metering-device-base/" xmlns:ns7="http://dom.gosuslugi.ru/schema/integration/nsi-base/" xmlns:ns13="http://dom.gosuslugi.ru/schema/integration/debts/" xmlns:ns9="http://dom.gosuslugi.ru/schema/integration/organizations-registry-base/" xmlns:ns12="http://dom.gosuslugi.ru/schema/integration/bills-base/" xmlns:ns11="http://dom.gosuslugi.ru/schema/integration/payments-base/" xmlns:ns10="http://dom.gosuslugi.ru/schema/integration/organizations-base/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns4="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#">
   <env:Body>
      <env:Fault>
         <faultcode>env:Server</faultcode>
         <faultstring>AUT011000: Нет активной ИС с данным сертификатом</faultstring>
         <detail>
            <ns4:Fault>
               <ns4:ErrorCode>AUT011000</ns4:ErrorCode>
               <ns4:ErrorMessage>Нет активной ИС с данным сертификатом</ns4:ErrorMessage>
            </ns4:Fault>
         </detail>
      </env:Fault>
   </env:Body>
</env:Envelope>

Тут всё просто — открываем заявку на сайте ГИС ЖКХ и добавляем сертификат.

P,S. Отладку запросов далее можно делать в утилите soapui, Как? Тема отдельной будущей статьи, когда буду разбираться с запросами

Консоль администрирования 1С под Linux

Перейдя с Windows на Linux, теряется возможность управлять сервером 1С Предприятие через консоль администрирования, через оснастку. Но! оказывается довольно давно уже в платформе зашита подобная же утилита, которая доступна через «Функции для технического специалиста»: Стандартные -> Управление серверами.

При запуске будет практически аналогичная функциональность доступная ранее через консоль:

Запрет доступа по протоколу https «для всех кроме»

Задача: на нескольких серверах ограничить доступ к сайту по протоколу http/https для всех, кроме избранных IP.

Решить можно несколькими способами:

  • поправить .htaccess, добавив в него deny from all и allow from IP
  • на уровне файревола

Мне предпочтительней было сделать это на уровне файревола, т.к. таким образом не нужно прописывать запрет на доступ на каждом сайте, а запрещаю на ВСЕХ сайтах размещенных на этом сервере одновременно.

Принцип прописывания правил для всех файреволов одинаков: запрещаем по умолчанию всё, кроме того что нужно. Так как у меня немного зоопарк по серверам, то два различных файревола.

Ubuntu и иже с ним:

ufw default deny outgoing
ufw default deny incoming
ufw allow out 53
ufw allow from 19.82.24.12 to any port 443
ufw allow from 19.82.34.12 to any port 80
service ufw restart

CentOS и иже с ним:

firewall-cmd --zone=public --remove-service=http
firewall-cmd --zone=public --remove-service=https
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="15.8.15.1" port port="443" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="15.8.15.1" port port="80" protocol="tcp" accept'
systemctl restart firewalld.service

Продвинутая отправка почты из консоли

Есть множество статей как отправить почту из консоли терминала Linux. Но в основной своей массе, это всё касается уже настроенного почтового сервера. А если нужно отправить почту используя настройки SMTP с авторизацией, указанием кодировки и вложением в виде файла? Их есть у меня (с). Ниже пример:

echo "Test text" | mail -e 'set content_type=text/html' -v -S sendcharsets=utf-8,iso-8859-1 -s "Результат тестирование" -S smtp="асываo.ru:587" -S ssl-verify=ignore -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="vlg1-Noreply@interrao.ru" -S smtp-auth-password='ываывываы' -S from=noreply@ывывсывс.ru ывсывсыв@сывасывсыв.ru </var/tmp/res.html

Этот пример вышлет письмо в кодировке UTF-8, со вложенным файлом res.html. Авторизация по логину-паролю, с шифрованием start SSL.

как отправить почту из консоли терминала Linux

Другие статьи на эту тему тут

Как скачать из консоли файл с яндекс.диска

Редко, но бывают ситуации, что под рукой только консоль терминала, а нужно скачать файл размещенный на яндек.диске (скачать с яндекс диска из консоли). Для решения такой ситуации есть утилита wldhx.yadisk-direct. Установим её:

pip3 install wldhx.yadisk-direct

После установки, закачка (скачать с яндекс диска из консоли) сводится к одной команде:

curl -L $(yadisk-direct https://disk.yandex.ru/d/JswxXZvффvJpPA) -o kop.rar
скачать с яндекс диска из консоли

Другие интересные решения для работы в консоли здесь. Ссылка на оригинальный репозитарий здесь

Update 26/08/2025: иногда установленный скрипт не находится без пути. Полезно посмотреть где оно при помощи:

whereis yadisk-direct

1 2 3 4 … 11