Защищенные протоколы AlterOffice-cloud
Механизмы аутентификации и обмена реализуются с использованием защищенных протоколов аутентификации. При хранении и передаче конфиденциальность паролей обеспечивается шифрованием или хешированием с применением стойких криптографических алгоритмов. Веб-протокол 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 (защита поддоменов)
- Сертификат доступен только юридическим лицам
Следует использовать сертификаты, которые выдает Национальный удостоверяющий центр (НУЦ), работающий под эгидой Минцифры.
Рекомендуется ежегодно перевыпускать сертификат.