Защищенные протоколы AlterOffice-cloud — различия между версиями
(Настройка Apache) |
м |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 63: | Строка 63: | ||
Официально AlterOS не осуществляет техническую поддержку. | Официально AlterOS не осуществляет техническую поддержку. | ||
=== sscg === | === sscg === | ||
+ | Сертификаты x509 сложно получить правильно. SSCG позволяет легко и быстро создавать пригодные для использования подписанные сертификаты без необходимости разбираться в сложных командах ''openssl'', ''certtool'' или ''certutil''. | ||
+ | |||
Использование: sscg [ПАРАМЕТРЫ...] | Использование: sscg [ПАРАМЕТРЫ...] | ||
* '''-q, --quiet''' Не отображать вывод, если нет ошибки. | * '''-q, --quiet''' Не отображать вывод, если нет ошибки. | ||
Строка 78: | Строка 80: | ||
* '''--hostname=server.example.com''' Действительное имя хоста сертификата. Должно быть полное доменное имя. (по умолчанию: полное доменное имя текущей системы) | * '''--hostname=server.example.com''' Действительное имя хоста сертификата. Должно быть полное доменное имя. (по умолчанию: полное доменное имя текущей системы) | ||
* '''--subject-alt-name alter.example.com''' Необязательные дополнительные действительные имена хостов для сертификата. Помимо имен хостов, этот параметр также принимает явные значения, поддерживаемые RFC 5280, такие как IP:xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy. Может быть указано несколько раз. | * '''--subject-alt-name alter.example.com''' Необязательные дополнительные действительные имена хостов для сертификата. Помимо имен хостов, этот параметр также принимает явные значения, поддерживаемые RFC 5280, такие как IP:xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy. Может быть указано несколько раз. | ||
− | * '''--package=STRING''' | + | * '''--package=STRING''' Не используется. Сохранено для совместимости с более ранними версиями sscg. |
* '''--key-strength=2048 или больше''' Стойкость закрытых ключей сертификата в битах. (по умолчанию: 2048) | * '''--key-strength=2048 или больше''' Стойкость закрытых ключей сертификата в битах. (по умолчанию: 2048) | ||
* '''--hash-alg={sha256,sha384,sha512}''' Алгоритм хеширования, используемый для подписи. (по умолчанию: "sha256") | * '''--hash-alg={sha256,sha384,sha512}''' Алгоритм хеширования, используемый для подписи. (по умолчанию: "sha256") | ||
Строка 91: | Строка 93: | ||
* '''--crl-file=STRING''' Путь, по которому будет создан (пустой) файл списка отзыва сертификатов для приложений, ожидающих существования такого файла. Если не указано, такой файл не будет создан. | * '''--crl-file=STRING''' Путь, по которому будет создан (пустой) файл списка отзыва сертификатов для приложений, ожидающих существования такого файла. Если не указано, такой файл не будет создан. | ||
* '''--crl-mode=0644''' Права доступа файла созданного списка отзыва сертификатов. | * '''--crl-mode=0644''' Права доступа файла созданного списка отзыва сертификатов. | ||
− | * '''--cert-file=STRING''' Путь, по которому будет храниться публичный сертификат сервиса. ( | + | * '''--cert-file=STRING''' Путь, по которому будет храниться публичный сертификат сервиса. (по умолчанию "./service.pem") |
* '''--cert-mode=0644''' Права доступа файла созданного сертификата. | * '''--cert-mode=0644''' Права доступа файла созданного сертификата. | ||
− | * '''--cert-key-file=STRING''' Путь, по которому будет храниться закрытый ключ службы. ( | + | * '''--cert-key-file=STRING''' Путь, по которому будет храниться закрытый ключ службы. (по умолчанию "service-key.pem") |
* '''--cert-key-mode=0600''' Права доступа файла созданного ключа сертификата. | * '''--cert-key-mode=0600''' Права доступа файла созданного ключа сертификата. | ||
* '''-p, --cert-key-password=STRING''' Указание пароля для файла служебного ключа. Обратите внимание, что это будет видно в таблице процессов для всех пользователей, поэтому этот флаг следует использовать только в целях тестирования. Используйте '''--cert-keypassfile''' или '''--cert-key-password-prompt''' для безопасного ввода пароля. | * '''-p, --cert-key-password=STRING''' Указание пароля для файла служебного ключа. Обратите внимание, что это будет видно в таблице процессов для всех пользователей, поэтому этот флаг следует использовать только в целях тестирования. Используйте '''--cert-keypassfile''' или '''--cert-key-password-prompt''' для безопасного ввода пароля. | ||
Строка 122: | Строка 124: | ||
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem | SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem | ||
SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem | SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem | ||
+ | |||
+ | == Шаг 3 — Настройка браузера для работы с тестовым сертификатом == | ||
+ | |||
+ | Поскольку созданный '''тестовый''' сертификат не подписан доверенным центром сертификации вашего браузера, скорее всего, появится пугающее предупреждение, подобное приведенному ниже: | ||
+ | [[Файл:Browser_certificate_warning.png|600px|thumb|none|предупреждение браузера]] | ||
+ | |||
+ | для продолжения нужно принять сертификат или импортировать | ||
+ | |||
+ | about:preferences#privacy | ||
+ | |||
+ | '''Правка > Настройки > Просмотр сертификатов > Импортировать''' | ||
+ | |||
+ | [[Файл:Browser_certificate_management.png|600px|thumb|none|импорт сертификата ]] | ||
== Сертификат для сервера == | == Сертификат для сервера == | ||
Строка 129: | Строка 144: | ||
* Wildcard (защита поддоменов) | * Wildcard (защита поддоменов) | ||
* Сертификат доступен только юридическим лицам | * Сертификат доступен только юридическим лицам | ||
− | Следует использовать сертификаты, которые выдает Национальный удостоверяющий центр (НУЦ), работающий под эгидой Минцифры. | + | Следует использовать сертификаты, которые выдает '''Национальный удостоверяющий центр (НУЦ)''', работающий под эгидой '''Минцифры'''. |
Рекомендуется ежегодно перевыпускать сертификат. | Рекомендуется ежегодно перевыпускать сертификат. |
Текущая версия на 09:53, 11 сентября 2023
Механизмы аутентификации и обмена реализуются с использованием защищенных протоколов аутентификации. При хранении и передаче конфиденциальность паролей обеспечивается шифрованием или хешированием с применением стойких криптографических алгоритмов. Веб-протокол 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 (защита поддоменов)
- Сертификат доступен только юридическим лицам
Следует использовать сертификаты, которые выдает Национальный удостоверяющий центр (НУЦ), работающий под эгидой Минцифры.
Рекомендуется ежегодно перевыпускать сертификат.