Защищенные протоколы AlterOffice-cloud

Материал из Wiki AlterOS
Перейти к: навигация, поиск

Механизмы аутентификации и обмена реализуются с использованием защищенных протоколов аутентификации. При хранении и передаче конфиденциальность паролей обеспечивается шифрованием или хешированием с применением стойких криптографических алгоритмов. Веб-протокол TLS используются для помещения трафика в защищенную оболочку с шифрованием.

Настройка

SSL-сертификат – это цифровой сертификат, удостоверяющий подлинность веб-сайта и позволяющий использовать зашифрованное соединение.


Шаг 1 — Создание тестового сертификата

Для быстрого тестирования можно применять самоподписанный сертификат или сертификат

Как создать самоподписанный сертификат SSL для использования с веб-сервером Apache в AlterOS

Используйте надежное хранилище для корневого сертификата! Здесь просто создадим каталог без рассмотрения надежности хранения:

   sudo mkdir -p /etc/ssl/private
   sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Вам будет предложено ответить на ряд вопросов. Что делает отправляемая нами команда:

  • openssl: системная команда для создания и управления сертификатами OpenSSL, ключами и другими файлами.
  • req: стандартная команда OpenSSL управления запросом на подпись сертификата (CSR) X.509. X.509 стандарт ITU-T для инфраструктуры открытого ключа.
  • -x509: параметр для создания самоподписанного сертификата, вместо генерации запроса на подпись сертификата удостоверяющему центру.
  • -nodes: параметр OpenSSL для пропуска защиты сертификата с помощью пароля.
  • -days 365: параметр устанавливает срок действия сертификата в днях. Обычно срок действия один год.
  • -newkey rsa:4096: генерируем новый сертификат и новый ключ одновременно. У нас нет требуемого ключа для подписи сертификата с предыдущего шага, нам нужно создать его вместе с сертификатом. Для ключа используем шифрование RSA длиной 4096 бит.
  • -keyout: эта строка указывает OpenSSL, где сохраняем создаваемый закрытый ключ.
  • -out: данный параметр указывает OpenSSL, куда кладем создаваемый сертификат.

Будет задано несколько вопросов о нашем сервере, чтобы правильно внести информацию в сертификат.

   Country Name (2 letter code) [XX]:RU
   State or Province Name (full name):Moscow
   Locality Name (eg, city) [Default City]:Moscow
   Organization Name (eg, company) [Default Company Ltd]:MyCompany.
   Organizational Unit Name (eg, section) []:IT
   Common Name (eg, your name or your server's hostname) []:localhost
   Email Address []:admin@localhost

Также следует создать сильную группу Диффи-Хеллмана, которая будет использоваться при согласовании идеальной прямой секретности с клиентами.

   openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Certbot

Есть тестовый способ выпуска сертификата с помощью клиента Certbot компании Let’s Encrypt из Сан-Франциско.

Для этого понадобится:

  • подключение к сети Интернет.
  • опенсорсные скрипты клиента.
  • зарегистрированный домен.

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

Запуск генерации сертификата командой letsencrypt-auto certonly, используя плагин webroot:

   letsencrypt-auto certonly -a webroot --webroot-path=/web/path -d domain.com -d www.domain.com

Чтобы запустить процесс обновления для всех установленных доменов, выполните следующую команду:

   letsencrypt-auto renew

Пример автоматического ежененедельного обновления сертификата с помощью добавления в crontab.

   sudo crontab -e

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

   30 2 * * 1 letsencrypt-auto renew >> /var/log/letsencrypt-renew.log
   35 2 * * 1 systemctl reload httpd

Официально AlterOS не осуществляет техническую поддержку.

sscg

Сертификаты x509 сложно получить правильно. SSCG позволяет легко и быстро создавать пригодные для использования подписанные сертификаты без необходимости разбираться в сложных командах openssl, certtool или certutil.

Использование: sscg [ПАРАМЕТРЫ...]

  • -q, --quiet Не отображать вывод, если нет ошибки.
  • -v, --verbose Отображение сообщений о ходе выполнения.
  • -d, --debug Включить регистрацию отладочных сообщений. Подразумевается многословие. Предупреждение! Это выведет информацию о закрытом ключе на экран!
  • -V, --version Отобразить номер версии и выйти.
  • -f, --force Перезаписать любые ранее существовавшие файлы в запрошенных местах
  • --lifetime=1-3650 Срок действия сертификата (дни). (по умолчанию: 398)
  • --country=RU, KZ, и т.д. DN сертификата: Страна (C). (по умолчанию: "RU")
  • --state=Moscow, и т.д. DN сертификата: область или район (ST).
  • --locality=Moscow, Paris, и т.д. DN сертификата: Местоположение (L).
  • --organization=MyCompany DN сертификата: Организация (O). (по умолчанию: "Unspecified")
  • --organizational-unit=Инженерия, и т.д. DN сертификата: Организационная единица (OU).
  • --email=myname@example.com DN сертификата: адрес электронной почты (Email).
  • --hostname=server.example.com Действительное имя хоста сертификата. Должно быть полное доменное имя. (по умолчанию: полное доменное имя текущей системы)
  • --subject-alt-name alter.example.com Необязательные дополнительные действительные имена хостов для сертификата. Помимо имен хостов, этот параметр также принимает явные значения, поддерживаемые RFC 5280, такие как IP:xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy. Может быть указано несколько раз.
  • --package=STRING Не используется. Сохранено для совместимости с более ранними версиями sscg.
  • --key-strength=2048 или больше Стойкость закрытых ключей сертификата в битах. (по умолчанию: 2048)
  • --hash-alg={sha256,sha384,sha512} Алгоритм хеширования, используемый для подписи. (по умолчанию: "sha256")
  • --cipher-alg={des-ede3-cbc,aes-256-cbc} Шифр, используемый для шифрования файлов ключей. (по умолчанию: "aes-256-cbc")
  • --ca-file=STRING Путь, по которому будет храниться общедоступный сертификат CA. (по умолчанию: "./ca.crt")
  • --ca-mode=0644 Права доступа файла созданного сертификата CA.
  • --ca-key-file=STRING Путь, по которому будет храниться закрытый ключ центра сертификации. Если не указано, ключ будет уничтожен, а не записан на диск.
  • --ca-key-mode=0600 Права доступа файла созданного ключа CA.
  • --ca-key-password=STRING Указание пароля для файла ключей CA. Обратите внимание, что это будет видно в таблице процессов всем пользователям, поэтому его следует использовать только в целях тестирования. Используйте --ca-keypassfile или --ca-key-password-prompt для безопасного ввода пароля.
  • --ca-key-passfile=STRING Файл, содержащий пароль для шифрования файла ключа CA.
  • -C, --ca-key-password-prompt Запрос на ввод пароля для файла ключей CA.
  • --crl-file=STRING Путь, по которому будет создан (пустой) файл списка отзыва сертификатов для приложений, ожидающих существования такого файла. Если не указано, такой файл не будет создан.
  • --crl-mode=0644 Права доступа файла созданного списка отзыва сертификатов.
  • --cert-file=STRING Путь, по которому будет храниться публичный сертификат сервиса. (по умолчанию "./service.pem")
  • --cert-mode=0644 Права доступа файла созданного сертификата.
  • --cert-key-file=STRING Путь, по которому будет храниться закрытый ключ службы. (по умолчанию "service-key.pem")
  • --cert-key-mode=0600 Права доступа файла созданного ключа сертификата.
  • -p, --cert-key-password=STRING Указание пароля для файла служебного ключа. Обратите внимание, что это будет видно в таблице процессов для всех пользователей, поэтому этот флаг следует использовать только в целях тестирования. Используйте --cert-keypassfile или --cert-key-password-prompt для безопасного ввода пароля.
  • --cert-key-passfile=STRING Файл, содержащий пароль для шифрования файла служебного ключа.
  • -P, --cert-key-password-prompt Запрос на ввод пароля к файлу служебных ключей.
  • --client-file=STRING Путь, по которому будет храниться сертификат аутентификации клиента.
  • --client-mode=0644 Права доступа файла создаваемого сертификата.
  • --client-key-file=STRING Путь, по которому будет храниться закрытый ключ клиента. (по умолчанию — client-file)
  • --client-key-mode=0600 Права доступа файла созданного ключа сертификата.
  • --client-key-password=STRING Указание пароля для файла ключей клиента. Обратите внимание, что это будет видно в таблице процессов для всех пользователей, поэтому этот флаг следует использовать только в целях тестирования. Используйте --client-keypassfile или --client-key-password-prompt для безопасного ввода пароля.
  • --client-key-passfile=STRING Файл, содержащий пароль для шифрования файла ключей клиента.
  • --client-key-password-prompt Запрос на ввод пароля для файла ключей клиента.
  • --dhparams-file=STRING Файл, содержащий набор параметров Диффи-Хеллмана. (По умолчанию: "./dhparams.pem")
  • --no-dhparams-file Не создавать файл dhparams
  • --dhparams-named-group=STRING Выводит известные параметры DH. Доступные именованные группы: ffdhe2048, ffdhe3072, ffdhe4096, ffdhe6144, ffdhe8192, modp_2048, modp_3072, modp_4096, modp_6144, modp_8192, modp_1536, dh_1024_160, dh_2048_224, dh_2048_256. (По умолчанию: "ffdhe4096")
  • --dhparams-prime-len=INT Длина простого числа, генерируемого для dhparams, в битах. Если установлено значение, отличное от нуля, параметры будут генерироваться, а не использовать известную группу. (по умолчанию: 0)
  • --dhparams-generator={2,3,5} Значение генератора для dhparams. (по умолчанию: 2)

Шаг 2 — Настройка Apache

Нужно добавить сертификат и закрытый ключ в каталоги, где по умолчанию сервер их ищет, например:

   sudo cp /etc/ssl/private/apache-selfsigned.key /etc/pki/tls/private/localhost.key
   sudo cp /etc/ssl/certs/apache-selfsigned.crt   /etc/pki/tls/certs/localhost.crt

Или настроить каталоги сертификата и закрытого ключа в конфигурационном файле /etc/httpd/conf.d/ssl.conf

Например: сертификат Certbot подключается в конфигурационном файле из других каталогов:

   SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
   SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem

Шаг 3 — Настройка браузера для работы с тестовым сертификатом

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

предупреждение браузера

для продолжения нужно принять сертификат или импортировать

   about:preferences#privacy

Правка > Настройки > Просмотр сертификатов > Импортировать

импорт сертификата

Сертификат для сервера

Рекомендуется использовать сертификаты принадлежащие вашей организации, с помощью которых выполняется:

  • Проверка (OV) существования организации или Расширенная (EV) проверка организации
  • Шифрование всех передаваемых данных
  • Wildcard (защита поддоменов)
  • Сертификат доступен только юридическим лицам

Следует использовать сертификаты, которые выдает Национальный удостоверяющий центр (НУЦ), работающий под эгидой Минцифры.

Рекомендуется ежегодно перевыпускать сертификат.