SSL-сертификат состоит из двух частей: сам сертификат и
публичный ключ. Для хранения их нужно создать директорию
ssl
и перейти в нее:
# mkdir /etc/nginx/ssl
# cd /etc/nginx/ssl
Далее нужно определить имя хоста, для которого в дальнейшем
будем генерировать сертификат. Использование сертификатов,
выписанных на неправильное имя хоста, вызывает ошибки и
предупреждения в браузерах. Ввести в терминал команду
hostname -f
:
Это имя должно разрешаться на IP-адрес нашего сервера. Для
проверки нужно просмотреть файл /etc/hosts
:
Далее переходим к генерации обоих частей сертификата: сам сертификат и его публичный ключ:
# openssl req -new -x509 -days 35600 -nodes -out cert.pem -keyout cert.key
После этой команды интерактивно последуют несколько вопросов, касающихся необходимых параметров сертификата. Обратите внимание на «Common Name». Рекомендуется значение, равное доменному имени сервера.
Генерация ключей:
Перепроверим, что все данные о сертификате заполнились верно:
# openssl x509 -in cert.pem -noout -text
Сертификат готов, осталось прописать его в настройки nginx. В
конфигурационном файле
/opt/synergy/utils/configs/nginx/synergy-base
необходимо обновить настройки, определяющие путь к сертификату,
и опцию, позволяющую отключить HTTP и безальтернативно
перенаправлять все запросы на HTTPS:
# Also enable HTTPS # Make sure you have proper key # and certificatre in proper paths listen 443 ssl; keepalive_timeout 70; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/cert.key; # Redirect all HTTP queries to HTTPS # if ($scheme = http) { # return 301 https://$server_name$request_uri; # }
Несмотря на то, что теперь система доступна через https, порт
443 и даже при попытке входа по http, порту 80 будет
перенаправлять на https, порт 8080 останется доступным, т.е.
останется одна возможность обойти шифрование. Для устранения
этого недостатка можно сделать следующее: заблокировать Jboss
Synergy от любых соединений, кроме соединений с localhost, а
т.к. nginx работает на этом же самом localhost, он сможет
устанавливать соединения, следовательно, только правила nginx
будут регулировать соединения. Для этого открыть на
редактирование файл
/etc/default/arta-synergy-jboss
и заменить
строку BIND_ADDRESS="0.0.0.0"
на
BIND_ADDRESS="127.0.0.1"
.
После этого перезапустить Jboss:
# /etc/init.d/arta-synergy-jboss restart