Взаимодействие по SSL — [Архив] Протокол приема платежей через ЮKassa

Взаимодействие по SSL — [Архив] Протокол приема платежей через ЮKassa Сертификаты

Запрос на сертификат

Теперь у нас есть подтвержденный домен и можно приступать к получению сертификата. Выбираем самый простой тот, что бесплатный
Взаимодействие по SSL — [Архив] Протокол приема платежей через ЮKassa

Этот шаг занимает чуть больше времени, чем остальные, но тоже прост: заполняем форму и отправляем.

  1. Указываем до 10-ти доменных имен
  2. Выбираем способ генерации CSR
  3. Выполняем команду и генерируем CSR. В процессе генерации CSR Вам будет задан ряд вопросов, ответы на которые необходимо вводить в латинской раскладке. Достаточными являются:

    • Country Name (2 letter code) [AU] – страна регистрации организации, для которой получаем сертификат (для Росcии – RU)
    • State or Province Name (full name) [Some-State] – область, регион регистрации организации (Москва – Moscow)
    • Locality Name (eg, city) [] – город регистрации организации (Москва – Moscow)
    • Organization Name (eg, company) [Internet Widgits Pty Ltd] – наименование организации
    • Common Name (e.g. server FQDN or YOUR name) [] – доменное имя, для которого генерируется сертификат

    Пароль не обязателен

    Если в процессе формирования CSR вы укажете пароль, то он понадобится в момент крепления сертификата к домену. Если за вас это будет делать техподдержка, то они попросят у Вас этот пароль.

  4. Далее открываем сформированный <файл>.csr, копируем содержимое и вставляем в ожидающее нас поле.

  5. Отправляем и смотрим результат
    Взаимодействие по SSL — [Архив] Протокол приема платежей через ЮKassa

Docker swarm

Давайте проверим

Docker Swarmболее подробно можете почитать о нём в первой статьеDocker Swarm Manager

устанавливается на первый IP адрес каждого датацентра из списка в файле

stage

. Например из списка:

[dc1-cloud]
192.168.1.1
192.168.1.2
192.168.1.3

[dc2-cloud]
192.168.2.1
192.168.2.2
192.168.2.3

#--- in all DC ---#

# cloud in all DC
[cloud:children]
dc1-cloud
dc2-cloud

#--- everything in DC ---#

[dc1:children]
dc1-cloud

[dc2:children]
dc2-cloud

это будут

192.168.1.1192.168.2.1

Для того, что бы подключиться к Docker Swarm Manager необходимо выполнить:

» docker -H tcp://192.168.1.1:8000 --tlsverify=true --tlscacert=certs/ca/ca.pem --tlscert=certs/docker/cert.pem --tlskey=certs/docker/key.pem info

Вы должны лицезреть что-то похожее:

Containers: 13
Images: 12
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 3
 debian1: 192.168.1.1:2376
  └ Containers: 5
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 519.2 MiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU/Linux 8 (jessie), storagedriver=aufs
 debian2: 192.168.1.2:2376
  └ Containers: 4
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 519.2 MiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU/Linux 8 (jessie), storagedriver=aufs
 debian3: 192.168.1.3:2376
  └ Containers: 4
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 519.2 MiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.16.0-4-amd64, operatingsystem=Debian GNU/Linux 8 (jessie), storagedriver=aufs
CPUs: 3
Total Memory: 1.521 GiB
Name: debian1

Internet widgits pty ltd untrusted certificate pop-up: is it a virus? – internet access guide

internet widgits pty ltd untrusted certificate pop-up
internet widgits pty ltd untrusted certificate pop-up

Using the internet has become more of a necessity for some people nowadays. This is considering the fact that they have decided to move all their personal and important data online. This allows users to access these files no matter where they are if they have a stable internet connection.

Additionally, you can even send stuff to your friends, family, or even colleagues through the internet. Aside from this, there are countless other benefits that this service provides to its users.

While you might enjoy using the internet, you need to remember that your personal data and files might get infected with a virus. This cannot only result in you losing all of these but instead someone might even be able to steal them. Talking about this some users have reported that they have been getting an error ‘Untrusted certificate Pop-uP; Internet Widgits Pty Ltd’ while using their internet. If you have been getting this issue as well then you might be confused about what it means.

Is It A Virus?

The first question that might come to your mind after looking at this error may be ‘Is it a virus?’. The short answer for this is ‘yes’. But it might vary for some users. While this error usually appears on systems that have been infected with potential malware, it might sometimes end up being from a malfunction in some of your applications. The error message will usually contain numeric values which can help you in finding out which application might be causing this.

Even if you are able to find the application, it might be stored up in different locations all over your system. This makes it extremely hard to pin down the exact file causing this error. On the other hand, if it is a virus, then it will keep on infecting other files as well. This is why it is recommended that you take action right after you encounter this problem. By doing this, you can prevent your data from getting damaged or even stolen.

How to Get Rid of This?

There are many ways that you can get rid of this error message. However, the first thing that you should do is to run an antivirus program on your system. If you do not have one already installed then you can easily find a list of reliable software from the internet. This should help in stopping the virus from spreading any further and might even delete it. Although, if your certificates have already been damaged then the antivirus will not fix them.

It can be quite difficult to find all the damaged certificates in your device’s registry editor and then fixing them one by one. Considering this you should use a certificate or registry repairing program that you can easily get from the internet. While downloading any software online, make sure that you read the reviews about it and use a reliable website. This is so that you don’t end up infecting your system with a virus again.

Взаимодействие по SSL — [Архив] Протокол приема платежей через ЮKassa

Stunnel на клиенте

На клиенте будем использовать версию stunnel аналогичную серверной. На сервере у нас 4.53. Забираем с одного из

Если прямая ссылка перестанет работать, найти нужную версию можно так:


Скачанный файл stunnel-4.53-installer.exe устанавливать не будем, просто распакуем содержимое в каталог stunnel4. В этот же каталог скопируем сертификат и ключ клиента, и сертификат сервера.

Редактируем файл stunnel.conf. У меня он имеет следующий вид:

debug = 7
; Пара сертификат/ключ клиента
cert = clientcert.pem
key = clientkey.pem
verify = 2
; Сертификат сервера
CAfile = servercert.pem
options = NO_SSLv2

[ssh]
client = yes
accept = 127.0.0.1:22
connect = 192.168.0.1:443

Здесь debug = 7 только на момент отладки, потом можно понизить до 3 или 4. Также есть опции для «тихого режима» и сокрытия значка в трее все есть в man’e.

Про сертификаты:  Актеллик,КЭ - описание с инструкцией

Запускаем stunnel.exe, и пробуем с помощью putty подключится к 127.0.0.1. Тестируем. Можно попробовать подключится с запрещенным сертификатом.

Аутентификация с использованием x.509 сертификатов

Чтобы понять задачу, немого забежим вперед и представим запущенные на разных серверах экземпляры mongod, которые необходимо объединить в реплику, подключить к ним mongos и предусмотреть возможность безопасного подключения клиентов к сформированному кластеру.

Само собой, участники обмена данными должны проходить проверку подлинности при подключении (быть доверенными) и желательно, что бы канал передачи данных также был защищен. На этот случай у MongoDB имеется поддержка TSL/SSL, а также несколько механизмов аутентификации.

“Keyfiles are bare-minimum forms of security and are best suited for testing or development environments. For production environments we recommend using x.509 certificates.”

X.509 является стандартом ITU-T для инфраструктуры открытых ключей и управления привилегиями. Этот стандарт определяет формат и то как распределяются открытые ключи с помощью подписанных цифровых сертификатов. Сертификат связывает открытый ключ с некоторым субъектом — пользователем сертификата. Достоверность этой связи достигается за счет цифровой подписи, которую выполняет доверенный центр сертификации.

(Помимо x.509 в MongoDB есть также высоконадежные методы Enterprise уровня – это Kerberos Authentication и LDAP Proxy Authority Authentication), но это не наш случай и здесь будет рассмотрена настройка именно x.509 аутентификации.

Взаимодействие по ssl — протокол зачислений на кошельки юmoney

Для аутентификации соединений с серверами ЮMoney вам нужен сертификат, выданный удостоверяющим центром ООО НКО «ЮМани» (NBCO YooMoney). Чтобы его получить, вам нужно создать запрос на сертификат (в формате CSR), заполнить заявку на получение сертификата и отправить запрос и заявку на сертификат по электронной почте своему менеджеру в ЮMoney.

Выполните команду:

Введите пароль и подтвердите. Например:

Выполните команду:

Введите необходимые параметры для запроса на сертификат. Используйте только латинские символы.

Пример заполнения параметров запроса на сертификат

Электронная подпись нужна для заполнения заявки на сертификат, она содержится в файле сертификата.

Чтобы получить электронную подпись, выполните команду:

Выпуск сертификата занимает не больше 2 рабочих дней.

В ответ на заявку менеджер в ЮMoney пришлет файл с сертификатом. Срок действия сертификата 1 год.

Что дальше:

  1. Разместите сертификат на своем сервере.
  2. Пропишите путь к нему в настройках скриптов, которые взаимодействуют с ЮMoney.
  3. Если вы проверяете сертификат конечного сервера, загрузите цепочку сертификации (сертификаты удостоверяющего центра NBCO YooMoney) и добавьте их в списки доверенных корневых и промежуточных центров сертификации своего ПО.

При необходимости можно хранить пару «приватный ключ»—«сертификат» в едином зашифрованном файле-ключнице формата PKCS#12. Изготовить такую ключницу можно командой:

За подробной информацией по установке сертификата обращайтесь к менеджеру по подключению.

Необходимо:

  • Проверять подлинность серверов ЮMoney с помощью цепочки сертификации и не устанавливать соединение, если проверка не пройдет успешно.
  • Использовать свой приватный ключ и сертификат при установлении подключений к серверам ЮMoney.
  • Сохранять конфиденциальность приватного ключа.
  • Самостоятельно следить за сроком действия сертификата.

Рекомендуется:

Если срок действия сертификата закончится или он будет скомпрометирован, можно получить новый по данному регламенту.

Коды ошибок

Генерация self-sign сертификата

Для работы с ключами принято использовать OpenSSL

Команда openssl req — это запрос на генерацию нового сертификата.

Параметры:

При выполнении команды у вас будут запрошены данные вашего ресурса. Вот так это может выглядеть:

Параметр Common Name обязательно должен совпадать с адресом вашего ресурса.

Возможна неинтерактивная генерация сертификата с использованием параметра -subj:

При использовании сертификата необходимо явно указать Web-серверу какой шифр (chipers) используется.
Для примера выше стоит использовать значение EECDH AESGCM:EDH AESGCM:AES256 EECDH:AES256 EDH

На ресурсе cipherli.st можно узнать какие настройки безопасность актуальны на текущий момент и
как установить их в одном из популярных веб-серверов.

UPD: 27.08.2021

Для генерации сертификата, который включает Subject Alter Names необходимо поработать с конфигурационным файлом openssl.cnf. Узнать его местонахождение можно командой find /usr/lib -name openssl.cnf.

Далее, на лету изменяем в нём необходимые параметры и генерируем privkey.pem и fullchain.pem:

openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name secp384r1) -keyout privkey.pem -out fullchain.pem -days 365 -subj "/C=RU/ST=Moscow/L=Moscow/O=My Company/CN=domain.local" -config <(cat /usr/lib/ssl/openssl.cnf | sed 's/[ v3_ca ]/[ v3_ca ]nsubjectAltName = @alternate_names/g' | sed 's/# copy_extensions/copy_extensions/g' | printf "$(cat -)n[ alternate_names ]nDNS.1 = domain.localnDNS.2 = *.domain.local")

Генерировать клиентские частные ключи

$ cd /var/lib/postgresql/data
$ openssl genrsa -des3 -out postgresql.key 2048
Generating RSA private key, 2048 bit long modulus
...........................................................................     
.....     
e is 65537 (0x010001)
Enter pass phrase for postgresql.key:
Verifying - Enter pass phrase for postgresql.key:

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

$ openssl rsa -in postgresql.key -out postgresql.key
Enter pass phrase for postgresql.key:
writing RSA key

Генерировать сервер закрытый ключ

$ cd /var/lib/postgresql/data
$ openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus
...........................................................................     
.....     
e is 65537 (0x010001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

После генерируемого ключа сервера сгенерирован, вам необходимо удалить пароль, в противном случае он появится аномальный, когда база данных перезапускается.

$ openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:
writing RSA key

Конфигурация экземпляров mongod

Для корректного запуска нам необходимо передать ряд параметров экземплярам mongod. Для этого можно использовать конфигурационный файл, либо передавать все необходимые значения в качестве аргументов терминальной команды. Практически все параметры конфигурации имеют свое отражение в соответствующих аргументах командной строки.

Вариант с конфиг-файлом на мой взгляд более оправдан, так как отдельный структурированный файл проще читать и дополнять, и в таком случае запуск, экземпляра программы сводится к передаче ему единственного аргумента – расположения конфигурационного-файла:

mongod --config <path-to-config-file>

Итак, создадим файл конфигурации для экземпляра mongod первой шард-реплики (rs0) на первом сервере:

#
# /root/mongodb/cfg/mongod-rs0.conf
#

replication:
 replSetName: "rs0" # название реплики

net:
 port:      27000
 ssl:
      mode:       requireSSL # требуем защищенного соединения
      PEMKeyFile:  /root/mongodb/keys/server1.pem
      clusterFile: /root/mongodb/keys/server1.pem
      CAFile:     /root/mongodb/keys/mongodb-CA-cert.crt
      weakCertificateValidation: false # запрещаем подключаться без сертификата
      allowInvalidCertificates:  false # запрещаем подключение с невалидными сертификатами

security:
 authorization:   enabled # требуем обязательную авторизацию
 clusterAuthMode: x509 # метод авторизации - MONGODB-X509

storage:
 dbPath :   /root/mongodb/data/rs0 # указываем каталог для данных

systemLog:
  destination: file # будем выводить лог в файл
  path:     /root/mongodb/logs/mongod-rs0.log # путь для лог-файла
  logAppend:   true # дописывать лог-файл при следующем запуске


Аналогичный файл создаем для второй шард-реплики (rs1), но изменяем порт, название реплики, расположение каталога данных и лог файла:

#
# /root/mongodb/cfg/mongod-rs1.conf
#

replication:
 replSetName: "rs1"

net:
 port:      27001
 ssl:
      mode:       requireSSL
      PEMKeyFile:  /root/mongodb/keys/server1.pem
      clusterFile: /root/mongodb/keys/server1.pem
      CAFile:     /root/mongodb/keys/mongodb-CA-cert.crt
      weakCertificateValidation: false
      allowInvalidCertificates:  false

security:
 authorization:   enabled
 clusterAuthMode: x509

storage:
 dbPath :   /root/mongodb/data/rs1

systemLog:
  destination: file
  path:     /root/mongodb/logs/mongod-rs1.log
  logAppend:   true

И по аналогии для третьей реплики (rs2):

#
# /root/mongodb/cfg/mongod-rs2.conf
#

replication:
 replSetName: "rs2"

net:
 port:      27002
 ssl:
      mode:       requireSSL
      PEMKeyFile:  /root/mongodb/keys/server1.pem
      clusterFile: /root/mongodb/keys/server1.pem
      CAFile:     /root/mongodb/keys/mongodb-CA-cert.crt
      weakCertificateValidation: false
      allowInvalidCertificates:  false

security:
 authorization:   enabled
 clusterAuthMode: x509

storage:
 dbPath :   /root/mongodb/data/rs2

systemLog:
  destination: file
  path:     /root/mongodb/logs/mongod-rs2.log
  logAppend:   true

Помимо инстансов, организующих три шард-реплики в нашем кластере будут монгоды обеспечивающие работу сервера конфигурации, который будет построен на основе реплики (rscfg).

Стоит пояснить, что роль конфиг-сервера может выполнять и один mongod (как впрочем и в случае с шардом), но для обеспечения надежности и отказоустойчивости рекомендуется делать конфиг-сервер также на основе Replica Set.

Про сертификаты:  Смена наименования ООО 2021 год: пошаговая инструкция

Конфиг-файл служебной реплики отличается от реплик данных наличием параметра “sharding.clusterRole” который сообщает инстансу mongod его особое предназначение:

#
# /root/mongodb/cfg/mongod-rscfg.conf
#

sharding:
  clusterRole: configsvr # указываем роль в кластере - сервер конфигурации

replication:
 replSetName: "rscfg" # название реплики

net:
 port:      27888
 ssl:
      mode:       requireSSL
      PEMKeyFile:  /root/mongodb/keys/server1.pem
      clusterFile: /root/mongodb/keys/server1.pem
      CAFile:     /root/mongodb/keys/mongodb-CA-cert.crt
      weakCertificateValidation: false
      allowInvalidCertificates:  false

security:
 authorization:   enabled
 clusterAuthMode: x509

storage:
 dbPath :   /root/mongodb/data/config

systemLog:
  destination: file
  path:     /root/mongodb/logs/mongod-rscfg.log
  logAppend:   true

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

net.ssl.PEMKeyFilenet.ssl.clusterFile

в которых должны быть указаны сертификаты соответствующего сервера (server2.pem, server3.pem).

Можно приступать к генерации сертификатов:


Перейдем в нужную директорию, где будем генерировать ключи и сертификаты

cd  /etc/openvpn/easy-rsa/2.0
[root@test 2.0]# source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
[root@test 2.0]# ./clean-all
#Создаем самоподписной корневой сертификат и ключ, все ответы можно оставить по умолчанию, кроме Common Name
[root@test 2.0]# ./build-ca
Generating a 1024 bit RSA private key
.........      
.......................      
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [Moscow]:
Organization Name (eg, company) [YOURCOMPANY]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [changeme]:test
Name [changeme]:
Email Address [mail@host.domain]:

Создаем сертификат и ключ для сервераВсе ответы можно оставить по умолчанию

[root@test 2.0]# ./build-key-server server
Generating a 1024 bit RSA private key
.........................      
.............................      
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [MOSCOW]:
Locality Name (eg, city) [MOSCOW]:
Organization Name (eg, company) [YOURCOMPANY]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [server]:
Name [changeme]:
Email Address [mail@host.domain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl-0.9.8.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'RU'
stateOrProvinceName   :PRINTABLE:'MOSCOW'
localityName          :PRINTABLE:'MOSCOW'
organizationName      :PRINTABLE:'YOURCOMPANY'
organizationalUnitName:PRINTABLE:'changeme'
commonName            :PRINTABLE:'server'
name                  :PRINTABLE:'changeme'
emailAddress          :IA5STRING:'mail@host.domain'
Certificate is to be certified until Mar 20 06:56:48 2023 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Генирируем ключ Диффи-Хелмана

[root@test 2.0]# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
................................................... ................................................................. ................... .. ......................................................................................................................................... ........... ....................................................... .... .................................................................................................. ...................................................................... ................................................................................................. ............................ ..................................................................... .............  *  *  *

Генерируем клиентский ключ (для каждой машины или телефона он должен быть свой)Все ответы оставляем по умолчанию

[root@test 2.0]# ./build-key client1
Generating a 1024 bit RSA private key
.      
......      
writing new private key to 'client1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [Moscow]:
Organization Name (eg, company) [YOURCOMPANY]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [client1]:
Name [changeme]:
Email Address [mail@host.domain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl-0.9.8.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'RU'
stateOrProvinceName   :PRINTABLE:'CA'
localityName          :PRINTABLE:'Moscow'
organizationName      :PRINTABLE:'YOURCOMPANY'
organizationalUnitName:PRINTABLE:'changeme'
commonName            :PRINTABLE:'client1'
name                  :PRINTABLE:'changeme'
emailAddress          :IA5STRING:'mail@host.domain'
Certificate is to be certified until Mar 20 07:01:46 2023 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Немного теории


Для начала немого разберемся с ShardedCluster MongoDB и его основными компонентами.

Шардирование

как таковое является методом

горизонтального масштабирования

вычислительных систем, хранящих и предоставляющих доступ к данным. В отличие от

вертикального масштабирования

, когда производительность системы удается увеличить за счет повышения производительности отдельно взятого сервера, например, за счет перехода на более мощный CPU, добавления объема доступной оперативной памяти или дискового пространства, шардирование работает за счет распределения набора данных и нагрузки между несколькими серверами и добавления новых серверов по мере необходимости (это как раз наш случай).

Плюсом такого масштабирования является его практически бесконечный потенциал к расширению в то время как вертикально масштабируемая система заведомо ограничена, например, доступным “железом” у хостинг-провайдера.

Что ожидается получить от перехода на шардированный кластер MongoDB? В первую очередь необходимо получить распределение нагрузки операций чтения/записи между шардами кластера, а во-вторых достичь высокой отказоустойчивости (постоянная доступность данных) и сохранности данных за счет избыточного копирования (репликации).

В случае MongoDB, шардирование данных происходит на уровне коллекций, это означает, что мы можем явно указывать данные какой коллекции необходимо распределять по существующим шардам кластера. Также это означает, что вся совокупность документов шардируемой коллекции будет разделена на равные по размеру части — чанки (Chunk), которые впоследствии будут практически поровну мигрированы между шарадам кластера балансировщиком монги.

Подготовка файла для подсоединения телефона:


Создаем папку — внутри должна лежать папка keys и файл vpn.cnf.

Пример vpn.cnf — вместо XXX естественно ваш адрес сервера:

client
dev tun
proto udp
remote XXX.XXX.XXX.XXX 1194
resolv-retry infinite
nobind
ca /yealink/config/openvpn/keys/ca.crt
cert /yealink/config/openvpn/keys/client1.crt
key /yealink/config/openvpn/keys/client1.key
verb 3
mute 20
comp-lzo no

Внутри папки keys должны лежать соответственно три файла — ca.crt, client1.crt, client1.key. Имена файлов в конфиге и в папке должны соответствовать. Файлы вытаскивать с сервера после генерации любым удобным способом.После этого ставим 7zip и архивируем файл vpn.cnf и папку keys в tar архив без сжатия. Либо можете на линуксе из папки с файлом vpn.cnf и папкой keys запустить:

tar cvf connect.tar ./vpn.cnf ./keys

Заходим в веб интерфейс телефона. Идем на вкладку Network > Advanced > Vpn. Ставим active = enabled, импортируем файл и нажимаем внизу submit.
image

Если телефон не схавал файлик можете его перезагрузить. Увидеть что он подключился к нашему серверу — посмотрев логи:

tail -n100 -f /var/log/openvpn.log

Приступим


Первое, что мы сделаем — обновим систему:

sudo apt-get update
sudo apt-get upgrade

Настроим и включим ufw:

sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Установим stunnel:

sudo apt-get install stunnel4


При установке создаются:

Про сертификаты:  Руководство по выживанию — TLS/SSL и сертификаты SSL (X.509), подписанные УЦ и самоподписанные

— пользователь и группа stunnel4;

— интересные нам каталоги:

Проведем некоторые подготовительные мероприятия.

Разрешим автозапуск. В файле /etc/default/stunnel4 заменим ENABLED=0 на ENABLED=1:

sudo nano /etc/default/stunnel4

Создадим папки для клиентских сертификатов. certs — разрешенные, crls — запрещенные (отозванные). О самих сертификатах чуть позже.

sudo mkdir /var/lib/stunnel4/certs
sudo mkdir /var/lib/stunnel4/crls

Создадим лог-файл и сменим владельца.

Я не считаю размещение логов в месте отличном от /var/log хорошей идеей, но заставить stunnel писать логи за пределы окружения мне не удалось.

sudo touch /var/lib/stunnel4/stunnel.log
sudo chown stunnel4:stunnel4 /var/lib/stunnel4/stunnel.log

Я буду использовать свой конфиг, но если он вам не подходит можно взять пример в /usr/share/doc/stunnel4/examples

Создадим конфигурационный файл:

sudo nano /etc/stunnel/stunnel.conf


Со следующим содержимым:

; **************************************************************************
; * Global options                                                         *
; **************************************************************************

; Каталог chroot окружения.
chroot = /var/lib/stunnel4/
setuid = stunnel4
setgid = stunnel4

; Создается в окружении
pid = /stunnel4.pid

; Уровень болтливости
debug = 7
; Лог-файл
output = /stunnel.log
; Не использовать syslog
syslog = no


; **************************************************************************
; * Service defaults may also be specified in individual service sections  *
; **************************************************************************

; Сертификат/ключ сервера 
cert = /etc/stunnel/servercert.pem
key = /etc/stunnel/serverkey.pem

; Проверка сертификата. 0 - не проверять, 1 - проверять при наличии, 2 - проверять всегда, ...
verify = 2

; Каталог для разрешенных сертификатов. 
; Находится в окружении. Для каждого сертификата должна быть хэш-ссылка
CApath = /certs

; Каталог для запрещенных (отозванных) сертификатов. 
; Находится в окружении. Для каждого сертификата должна быть хэш-ссылка
CRLpath = /crls

; Не использвать SSLv2
options = NO_SSLv2

; **************************************************************************
; * Service definitions (remove all services for inetd mode)               *
; **************************************************************************


[ssh]
; Принимать соединения на интерфейс:порт или просто порт. Например accept = 192.168.0.1:443
accept = 443
; Отдавать приложению на интерфейс:порт или просто порт. Например connect = 127.0.0.1:22
connect = 22

Решение проблем

При некоторых условиях может возникнуть следующая ошибка:

Can't open C:Program FilesCommon FilesSSL/openssl.cnf for reading, No such file or directory
9112:error:02001003:system library:fopen:No such process:cryptobiobss_file.c:72:fopen('C:Program FilesCommon FilesSSL/openssl.cnf','r')
9112:error:2006D080:BIO routines:BIO_new_file:no such file:cryptobiobss_file.c:79:
unable to find 'distinguished_name' in config
problems making Certificate Request
9112:error:0E06D06A:configuration file routines:NCONF_get_string:no conf or environment variable:cryptoconfconf_lib.c:270:

Главная подсказка в первой строке: Can’t open C:Program FilesCommon FilesSSL/openssl.cnf for reading, No such file or directory — она означает, что возникла ошибка чтения файла C:Program FilesCommon FilesSSL/openssl.cnf из-за того, что он отсутствует.

Файл openssl.cnf поставляется с самим веб-сервером Apache и находится в папке conf. Поэтому есть несколько вариантов, как исправить эту ошибку. Например, можно создать нужные папки и скопировать туда этот файл. Но можно пойти более простым путём — на время создания сертификатов установить переменную окружения OPENSSL_CONF указав в ней правильный путь до файла.

Также нужно переключиться из PowerShell в обычную командную строку Windows, поскольку иначе переменная окружения почему-то не устанавливается. Допустим, сервер размещён в папке C:ServerbinApache24bin, тогда файл openssl.cnf расположен по пути C:

cmd
cd C:ServerbinApache24bin
set OPENSSL_CONF=C:ServerbinApache24confopenssl.cnf

Отредактируйте пути в этих командах в соответствии с вашей структурой папок.

Связанные статьи:

Создаём самоподписанный ssl сертификат с помощью openssl. » my-sertif.ru

Создание самоподписанного SSL сертификат при помощи OpenSSLНедавно возникла необходимость создать самоподписанный сертификат. Использовал я для этого утилиту OpenSSL и Linux. Собственно этим и хочу с вами поделиться.

Для начала нам необходима ОС Linux, в принципе данная утилита есть и пот Windows, но так как есть linux пользуюсь им. В ОС необходимо установить пакет OpenSSL. Устанавливаем его следующей командой (если под админом можно без «sudo»):

После установки OpenSSL, создаём папки, в которых будут лежать наши сертификаты и ключи, например так:

Приступаем к созданию самоподписанного ssl сертификата. Выполняем команду:

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

Дальше нас попросят ввести пароль к ключу. Вводим пароль, не меньше 4 символов, и повторяем ввод пароля. Затем нас попросят ввести данные о сертификате (информацию о серверной стороне). Если какие-то данные Вам не нужны можете просто ставить точку («.»).

alt

Давайте рассмотрим по порядку, что нам предлагают ввести:

В итоге мы получили два файла, ключ и сертификат. Ключ-это секретный ключ, публичный ключ находиться в теле самого сертификата. Сам сертификат выглядит так:

Ещё можно немного модифицировать наш скрипт, например убрать пароль с секретного ключа, это в большинстве случаев не удобно, если сервис стартует в автоматическом режиме, в тот момент когда ему необходимо будет получить доступ к секретному ключу, нужно будет вручную ввести пароль.

Добавляем параметр «-nodes», в результате секретный ключ не будет зашифрован паролем.

Так же можно ещё добавить параметр «-subj» — этот тот кому принадлежит сертификат, то что мы вводили в интерактивном режиме (название организации, мыло и так далее). Можно эти параметры сразу указать в скрипте. Например так:

В примере выше пропускаем все поля, кроме CN (Common Name).

Для просмотра сертификата можно воспользоваться этой командой:

На этом всё. Не забывайте пользоваться кнопками «Поделиться в соц. сетях», так же подписываться на наш Канал и группы в ВК, Twitter, Facebook.

Всем удачи и море печенек!

Создание резервной копий базы данных

Создание резервной копии всех компонент шардированного кластера весьма сложная процедура, которая требует, чтобы балансировщик находился в выключенном состоянии (при этом его нельзя остановить принудительно во время миграции), блокировки SECONDARY-узлов на каждом шарде для последующего их резервного копирования. Подробнее о выполнении полного резервного копирования вы можете прочитать в официальной

Для себя мы решили проблему резервного копирования, периодическим созданием привычного дампа данных необходимых баз. О выполнении данной процедуры я и опишу здесь.

Резервное копирование базы analytics мы будем выполнять при помощи утилиты mongodump которая идет в составе пакета MongoDB Community.

В MongoDB есть специальная встроенная роль backup, обладающая минимальным набором прав для выполнения резервного копирования данных. Для выполнения данной процедуры мы заведем отдельного пользователя и по традиции сперва сгенерируем ему x.509 сертификат.

CN=backuper,OU=StatisticsClient,O=SomeSystems,L=Moscow,ST=MoscowRegion,C=RU


Теперь подключимся к кластеру и создадим пользователя backuper с built-in ролью backup:

Шардинг

Шардирование в нашем случае разделит высоконагруженную коллекцию statistics по заданному индексу – ключу шардирования

(Shard key)

между несколькими шардами, которые мы скоро добавим. При активации шардинга для коллекции вся совокупность ее документов будет разделена на

n

частей, называемых чанками

(Chunks)

. Количество чанков на которое будет разделена коллекция при включении у нее шардирования и то как часто будут формироваться новые чанки, напрямую зависит от объема данных в вашей коллекции, а также от параметра

chunksize

который задет размер чанка и по-умолчанию равен

64 Mb

. Если вы желаете в своем кластере указать другой размер чанка, то это необходимо сделать до активации шардирования на данных коллекций, т.к. новый размер чанка будет применен только к вновь формируемым чанкам.

Для того чтобы изменить размер чанка подключимся к монгосу с сертификатом суперюзера и пройдем аутентификацию. Вообще аутентификацию можно объединить со входом, указав ее механизм (аргумент authenticationMechanism), БД которая отвечает за проверку подлинности сертификата (authenticationDatabase) и непосредственно юзера которому принадлежит сертификат (u). Для нашего суперюзера (root) команда «подключение аутентификация” примет следующий вид:

Оцените статью
Мой сертификат
Добавить комментарий