Differences

This shows you the differences between two versions of the page.

Link to this comparison view

citrix:web-интерфеис-xenapp-за-nginx-https-sni [2019/02/11 09:13] – external edit 127.0.0.1citrix:web-интерфеис-xenapp-за-nginx-https-sni [2019/11/21 11:19] (current) – [Шаг 3 : Перебрасываем сертификаты на машину nginx и извлекаем приватный ключ из сертификата сервера web-интерфейса] admin
Line 1: Line 1:
 +======ВСЕ ЧТО ОПИСАНО ТУТ - НЕ РАОТАЕТ! То есть можно установить сертификат сервера web-интерфейса XenApp на nginx и терминировать сессию SSL на nginx и сам web-интерфейс будет работать правильно. НО! приложения в таком виде не запускаются! Citrix Reciever делает какой-то HTTPS запрос, который не имеет заголовка, а содержит несколько шестнадцатеричных символов и nginx этого не понимает! ======
 +
 +Поэтому - в качестве reverse proxy и балансировщика нагрузки надо использовать HAproxy как описано тут: [[HAproxy-балансировщик-нагрузки-и-reverse-proxy-для-XenApp-и-других-HTTPS-сервисов-на-одном-IP|HAproxy - балансировщик нагрузки и reverse-proxy для XenApp и других HTTPS сервисов на одном IP]] \\
 +
 +
 +План работ:\\
 +Экспорт сертификата сервера Web-интерфейса в формате PFX (формат понятный Windows 2008).\\
 +Экспорт корневого сертификата нашего центра сертификации.\\
 +Преобразование сертификата сервера Web-интерфейса из формата PFX в формат PEM (понятный nginx).\\
 +Преобразование корневого сертификата нашего центра сертификации из формата *.cer в формат PEM (понятный nginx).\\
 +Настройка nginx\\
 +Настройка Web-интерфейса XenApp.\\
 +
 +Итак приступим.\\
 +
 +======Шаг 1: Экспорт сертификата======
 + Запускаем **mmc.exe**\\
 + Заходим в меню 'Console' и нажимаем 'Add/Remove Snap-in'.\\
 + Нажимаем кнопку 'Add', выбираем 'certificates' и нажимаем 'Add'.\\
 + Выбираем 'Computer Account' и нажимаем 'Next'.\\
 + Выбираем 'Local Computer' и нажимаем 'OK'.\\
 + Нажимаем 'Close' и затем 'OK'.\\
 + Разворачиваем меню 'Certificates' и нажимаем на папку 'Personal'.\\
 + Делаем правый клик на сертификате который будем экспортировать и выбираем 'All tasks' -> 'Export'.\\
 + Появляется мастер. Убеждаемся что стоит галочка добавления приватного ключа и продолжаем выполнять инструкции мастера пока не будет сгенерирован .PFX файл. \\
 +
 +======Шаг 2: Экспорт корневого сертификата центра сертификации======
 + Запускаем **mmc.exe**\\
 + Заходим в меню 'Console' и нажимаем 'Add/Remove Snap-in'.\\
 + Нажимаем кнопку 'Add', выбираем 'certificates' и нажимаем 'Add'.\\
 + Выбираем 'Computer Account' и нажимаем 'Next'.\\
 + Выбираем 'Local Computer' и нажимаем 'OK'.\\
 + Нажимаем 'Close' и затем 'OK'.\\
 + Разворачиваем меню 'Certificates' и нажимаем на папку 'Доверенные корневые центры сертификации'.\\
 + Делаем правый клик на сертификате который будем экспортировать и выбираем 'All tasks' -> 'Export'.\\
 + Появляется мастер. Формат экспортируемого файла - **X.509 (CER) в кодировка DER**.\\
 +
 +======Шаг 3 : Перебрасываем сертификаты на машину nginx и извлекаем приватный ключ из сертификата сервера web-интерфейса======
 +Передаем сертификат на машину с nginx и экспортируем приватный ключ из .PFX файла.\\
 +<code>openssl pkcs12 -in webserver.pfx -nocerts -out webserver_key.pem</code>
 +
 +Следующая команда удалит пароль из приватного ключа, чтобы nginx не запрашивал его при старте.\\
 +<code>openssl rsa -in webserver_key.pem -out webserver_key_nopassword.pem</code>
 +
 +И заменим файл с паролем на файл без пароля:\\
 +<code>mv webserver_key_nopassword.pem webserver_key.pem</code>
 +
 +Для извлечения приватного ключа из PFX-файла выполните команду:\\
 +  openssl pkcs12 -in filename.pfx -nocerts -out privatekey.pem\\
 +Для извлечения сертификата из PFX-файла выполните команду:\\
 +  openssl pkcs12 -in filename.pfx -clcerts -nokeys -out certificate.crt\\
 +======Шаг 4 : Извлекаем сертификат .pem из сертификата сервера web-интерфейса .pfx======
 +Экспортируем сертификат из .PFX файла.\\
 +<code>openssl pkcs12 -in webserver.pfx -clcerts -nokeys -out webserver_cert.pem</code>
 +
 +======Шаг 5: Конвертируем корневой сертификат в формат PEM и присоединяем его к сертификату web-сервера======
 +Конвертация из DER в PEM:\\
 +<code>openssl x509 -inform der -in CA_certificate.cer -out CA_certificate.pem</code>
 +
 +А затем объединить корневой сертификат и сертификат сервера:\\
 +<code>cat CA_certificate.pem >> webserver_cert.pem</code>
 +
 +======Шаг 6: Настраиваем nginx======
 +Во первых положим файлы сертификата и ключа в папку с конфигурацией nginx. У меня конфигурация nginx лежит в каталоге **/usr/local/nginx/conf/**. \\
 +<code>cp webserver_cert.pem /usr/local/nginx/conf/certs/webserver_cert.pem
 +cp webserver_key.pem /usr/local/nginx/conf/certs/webserver_key.pem</code>
 +
 +Затем в конфигурации nginx пропишем reverse-proxy на наш web-интерфейс XenApp:\\
 +
 +<code>server {
 +listen 443 ssl;
 +server_name xenapp.mycompany.com;
 +
 +ssl                     on;
 +ssl_protocols           SSLv3 TLSv1;
 +ssl_certificate /usr/local/nginx/conf/certs/webserver_cert.pem;
 +ssl_certificate_key /usr/local/nginx/conf/certs/webserver_key.pem;
 +
 +access_log /var/log/nginx/xenapp.mycompany.com.log main;
 +
 +location / {
 +proxy_pass http://xenapp.mycompany.com;
 +}
 +}
 +</code>
 +
 +С хоста nginx имя **xenapp.mycompany.com** должно **резолвится** в локальный IP-адрес сервера с Web-интерфейсом. Для этого пропишем его в /etc/hosts или на внутренний DNS. \\
 +
 +======Шаг 7: Настройка Web-интерфейса XenApp======
 +У меня оба сайта Web-интерфейса настроены на 80 порту (без HTTPS). Настройка Web-интерфейса XenApp сводится к изменениию режима **Secure Access**.\\
 +До использования nginx у меня на одном сервере работали все компоненты XenApp - LicServer, сам XenApp, а также его Web-интерфейс и SecureGateway.  В такой конфигурации у меня работал режим GatewayDirect. Теперь, когда мы избавились от SecureGateway, режим  **Secure Access** нужно изменить на **Direct**.\\
  
  • citrix/web-интерфеис-xenapp-за-nginx-https-sni.txt
  • Last modified: 2019/11/21 11:19
  • by admin