<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<div dir="auto">
<div dir="auto">Клиент, в роли браузера, должен знать о вашем центре сертификации. Вы добавляли его сертификат в браузер? </div><div dir='auto'><br></div>
<div id="aqm-original" style="color: black;">
<div dir="auto">"Zalman_" <nginx-forum@forum.nginx.org> 20 октября 2020 г. 08:07:44 написал:</div>
<div><br></div>
<blockquote type="cite" class="gmail_quote" style="margin: 0 0 0 0.75ex; border-left: 1px solid #808080; padding-left: 0.75ex;">
<div dir="auto">Доброго времени суток!</div>
<div dir="auto"><br></div>
<div dir="auto">Нужна помощь по вопросу SSL шифрования.</div>
<div dir="auto"><br></div>
<div dir="auto">Объясню, что есть и что уже имеется.</div>
<div dir="auto"><br></div>
<div dir="auto">Основная задача – поднять RocketChat на локальном сервере и обеспечить</div>
<div dir="auto">шифрование при доступе к локальному серверу из вне.</div>
<div dir="auto"><br></div>
<div dir="auto">Для этих целей использовал Ubuntu 18.04 LTS на виртуалке на сервере. В</div>
<div dir="auto">качестве веб-сервера использовал Nginx - 1.14.0 (Ubuntu), а в качестве СУБД</div>
<div dir="auto">использую MongoDB - db version v4.0.20. Использование Nginx и MongoDB</div>
<div dir="auto">описано в мануале по установке RocketChat.</div>
<div dir="auto">Все это удалось сделать и все хорошо работает. То есть Nginx + MongoDB +</div>
<div dir="auto">RocketChat хорошо работают как в локальной сети, так и из вне (с помощью</div>
<div dir="auto">проброса портов). Однако не удается подключить SSL – сертификат. Так как</div>
<div dir="auto">сервер поднимался локально (доступ из вне и локально осуществляется через</div>
<div dir="auto">IP-адрес сервера и порт) и отсутствует какой-то домен, то получение</div>
<div dir="auto">SSL-сертификата от Let’S Encrypt является проблематичным, поэтому выбрал</div>
<div dir="auto">самоподписанный SSL-сертификат на основе OpenSSL.</div>
<div dir="auto">Приватный ключ, сертификат, а также ключ Диффи-Хеллмана сделал. Конфиги</div>
<div dir="auto">nginx.conf, а также конфиг в папке</div>
<div dir="auto">/etc/nginx/sites-available/rocketchat.conf настроил, однако по каким-то</div>
<div dir="auto">причинам доступ к чату есть через HTTP, но нет через HTTPS. </div>
<div dir="auto"><br></div>
<div dir="auto">С этой темой сижу уже достаточно долго. Пробовал много способов и много</div>
<div dir="auto">различных конфигов, но все равно не работает. </div>
<div dir="auto">Причем пробовал как с отключенным UFW, так и с включенным (разрешал</div>
<div dir="auto">подключение по портам 80, 443, *нужный мне порт*). Также в iptables тоже</div>
<div dir="auto">разрешил 3 предыдущих порта, но эффекта ноль.</div>
<div dir="auto"><br></div>
<div dir="auto">А вот тут я приведу конфиги.</div>
<div dir="auto">/etc/nginx/nginx.conf</div>
<div dir="auto">user www-data;</div>
<div dir="auto">worker_processes auto;</div>
<div dir="auto">pid /run/nginx.pid;</div>
<div dir="auto">include /etc/nginx/modules-enabled/*.conf;</div>
<div dir="auto"><br></div>
<div dir="auto">events {</div>
<div dir="auto"> worker_connections 768;</div>
<div dir="auto"> # multi_accept on;</div>
<div dir="auto">}</div>
<div dir="auto"><br></div>
<div dir="auto">http {</div>
<div dir="auto"> ##</div>
<div dir="auto"> # Basic Settings</div>
<div dir="auto"> ##</div>
<div dir="auto"> #sendfile on;</div>
<div dir="auto"> tcp_nopush on;</div>
<div dir="auto"> tcp_nodelay on;</div>
<div dir="auto"> keepalive_timeout 65;</div>
<div dir="auto"> types_hash_max_size 2048;</div>
<div dir="auto"> # server_tokens off;</div>
<div dir="auto"><br></div>
<div dir="auto"> # server_names_hash_bucket_size 64;</div>
<div dir="auto"> # server_name_in_redirect off;</div>
<div dir="auto"><br></div>
<div dir="auto"> include /etc/nginx/mime.types;</div>
<div dir="auto"> default_type application/octet-stream;</div>
<div dir="auto"><br></div>
<div dir="auto"> ##</div>
<div dir="auto"> # SSL Settings</div>
<div dir="auto"> ##</div>
<div dir="auto"> ##</div>
<div dir="auto"> # Logging Settings</div>
<div dir="auto"> ##</div>
<div dir="auto"><br></div>
<div dir="auto"> access_log /var/log/nginx/access.log;</div>
<div dir="auto"> error_log /var/log/nginx/error.log;</div>
<div dir="auto"><br></div>
<div dir="auto"> ##</div>
<div dir="auto"> # Gzip Settings</div>
<div dir="auto"> ##</div>
<div dir="auto"><br></div>
<div dir="auto"> gzip on;</div>
<div dir="auto"><br></div>
<div dir="auto"> # gzip_vary on;</div>
<div dir="auto"> # gzip_proxied any;</div>
<div dir="auto"> # gzip_comp_level 6;</div>
<div dir="auto"> # gzip_buffers 16 8k;</div>
<div dir="auto"> # gzip_http_version 1.1;</div>
<div dir="auto"> # gzip_types text/plain text/css application/json</div>
<div dir="auto">application/javascript text/xml application/xml applicatio$</div>
<div dir="auto"><br></div>
<div dir="auto"> ##</div>
<div dir="auto"> # Virtual Host Configs</div>
<div dir="auto"> ##</div>
<div dir="auto"><br></div>
<div dir="auto"> include /etc/nginx/conf.d/*.conf;</div>
<div dir="auto"> include /etc/nginx/sites-enabled/*.conf;</div>
<div dir="auto">}</div>
<div dir="auto"><br></div>
<div dir="auto">#mail {</div>
<div dir="auto"># # See sample authentication script at:</div>
<div dir="auto"># # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript</div>
<div dir="auto">#</div>
<div dir="auto"># # auth_http localhost/auth.php;</div>
<div dir="auto"># # pop3_capabilities "TOP" "USER";</div>
<div dir="auto"># # imap_capabilities "IMAP4rev1" "UIDPLUS";</div>
<div dir="auto">#</div>
<div dir="auto"># server {</div>
<div dir="auto"># listen localhost:110;</div>
<div dir="auto"># protocol pop3;</div>
<div dir="auto"># proxy on;</div>
<div dir="auto"># }</div>
<div dir="auto">#</div>
<div dir="auto"># server {</div>
<div dir="auto"># listen localhost:143;</div>
<div dir="auto"># protocol imap;</div>
<div dir="auto"># proxy on;</div>
<div dir="auto"># }</div>
<div dir="auto">#}</div>
<div dir="auto"><br></div>
<div dir="auto">/etc/nginx/sites-available/default.conf</div>
<div dir="auto"><br></div>
<div dir="auto">upstream backend {</div>
<div dir="auto"> server 127.0.0.1;</div>
<div dir="auto">}</div>
<div dir="auto"><br></div>
<div dir="auto">#HTTP</div>
<div dir="auto">server {</div>
<div dir="auto"> #Делаю конфиг согласно</div>
<div dir="auto">https://techlist.top/translation-nginx-to-https/</div>
<div dir="auto"> listen 80;</div>
<div dir="auto"> server_name *IP локального сервера*;</div>
<div dir="auto"> return 301 https://$server_name$request_uri;</div>
<div dir="auto">}</div>
<div dir="auto"><br></div>
<div dir="auto">#HTTPS</div>
<div dir="auto">server {</div>
<div dir="auto"> #Порт, который будет слушать Nginx для SSL</div>
<div dir="auto"> listen 443 ssl http2;</div>
<div dir="auto"><br></div>
<div dir="auto"> #Имя сайта</div>
<div dir="auto"> server_name *IP локального сервера*;</div>
<div dir="auto"><br></div>
<div dir="auto"> #Корневая директория и индексный файл (ничего не менял)</div>
<div dir="auto"> root /var/www/html;</div>
<div dir="auto"> index index.html index.htm index.nginx-debian.html;</div>
<div dir="auto"><br></div>
<div dir="auto"> #Лог-файлы</div>
<div dir="auto"> access_log /var/www/html/access_https.log;</div>
<div dir="auto"> error_log /var/www/html/error_https.log;</div>
<div dir="auto"><br></div>
<div dir="auto"> #SSL-секция</div>
<div dir="auto"><br></div>
<div dir="auto"> #Сертификат и ключ</div>
<div dir="auto"> ssl_certificate /etc/ssl/certs/rccrt.crt;</div>
<div dir="auto"> ssl_certificate_key /etc/ssl/private/rckey.key;</div>
<div dir="auto"><br></div>
<div dir="auto"> #SSL-сессия</div>
<div dir="auto"> ssl_session_timeout 1d;</div>
<div dir="auto"> ssl_session_cache shared:SSL:50m;</div>
<div dir="auto"> ssl_session_tickets off;</div>
<div dir="auto"><br></div>
<div dir="auto"> #Diffie-Hellman ключ для DHE-шифров</div>
<div dir="auto"> ssl_dhparam /etc/ssl/certs/dhparam.pem;</div>
<div dir="auto"><br></div>
<div dir="auto"> #Используемые протоколы</div>
<div dir="auto"> ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;</div>
<div dir="auto"><br></div>
<div dir="auto"> #Наборы шифров</div>
<div dir="auto"> ssl_ciphers '*набор шифров*';</div>
<div dir="auto"><br></div>
<div dir="auto"> #Приоритет серверных шифров</div>
<div dir="auto"> ssl_prefer_server_ciphers on;</div>
<div dir="auto"><br></div>
<div dir="auto"> #Включение HSTS (Strict-Transport-Security)(15768000 seconds = 6</div>
<div dir="auto">месяцев)</div>
<div dir="auto"> add_header Strict-Transport-Security max-age=15768000;</div>
<div dir="auto"><br></div>
<div dir="auto"> resolver 8.8.8.8 8.8.4.4 valid=300s;</div>
<div dir="auto"><br></div>
<div dir="auto"> # server_name _;</div>
<div dir="auto"><br></div>
<div dir="auto"> location / {</div>
<div dir="auto"> # Параметры проксирования</div>
<div dir="auto"> proxy_send_timeout 600;</div>
<div dir="auto"> proxy_read_timeout 600;</div>
<div dir="auto"> proxy_buffer_size 128k;</div>
<div dir="auto"> proxy_buffers 4 256k;</div>
<div dir="auto"> proxy_busy_buffers_size 256k;</div>
<div dir="auto"> proxy_set_header Host $host;</div>
<div dir="auto"> proxy_set_header X-Real-IP $remote_addr;</div>
<div dir="auto"> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;</div>
<div dir="auto"> proxy_set_header X-Forwarded-Proto $scheme;</div>
<div dir="auto"> proxy_set_header HTTPS YES;</div>
<div dir="auto"> # IP-адрес целевой площадки для проксирования</div>
<div dir="auto"> proxy_pass http://192.168.1.108;</div>
<div dir="auto"> }</div>
<div dir="auto"><br></div>
<div dir="auto"> # pass the PHP scripts to FastCGI server listening on</div>
<div dir="auto">127.0.0.1:9000</div>
<div dir="auto"> #</div>
<div dir="auto"> #location ~ \.php$ {</div>
<div dir="auto"> # include snippets/fastcgi-php.conf;</div>
<div dir="auto"> #</div>
<div dir="auto"> # # With php7.0-cgi alone:</div>
<div dir="auto"> # fastcgi_pass 127.0.0.1:9000;</div>
<div dir="auto"> # # With php7.0-fpm:</div>
<div dir="auto"> # fastcgi_pass unix:/run/php/php7.0-fpm.sock;</div>
<div dir="auto"> #}</div>
<div dir="auto"><br></div>
<div dir="auto"> # deny access to .htaccess files, if Apache's document root</div>
<div dir="auto"> # concurs with nginx's one</div>
<div dir="auto"> #</div>
<div dir="auto"> #location ~ /\.ht {</div>
<div dir="auto"> # deny all;</div>
<div dir="auto"> #}</div>
<div dir="auto">}</div>
<div dir="auto"><br></div>
<div dir="auto">Далее делаю «копию» в папку sites-enabled</div>
<div dir="auto">sudo ln -s /etc/nginx/sites-available/default.conf</div>
<div dir="auto">/etc/nginx/sites-enabled/</div>
<div dir="auto"><br></div>
<div dir="auto">Проверяю синтаксис</div>
<div dir="auto">sudo nginx -t</div>
<div dir="auto">(на что получаю положительный ответ)</div>
<div dir="auto">nginx: the configuration file /etc/nginx/nginx.conf syntax is ok</div>
<div dir="auto">nginx: configuration file /etc/nginx/nginx.conf test is successful</div>
<div dir="auto"><br></div>
<div dir="auto">И последовательно делаю перезапуск Nginx</div>
<div dir="auto">sudo service nginx restart</div>
<div dir="auto">sudo systemctl restart nginx</div>
<div dir="auto"><br></div>
<div dir="auto">В итоге, набирая IP и порт и пытаясь подключиться по HTTPS, в Google Chrome</div>
<div dir="auto">вижу ошибку ERR_CONNECTION_CLOSED. В чем может быть проблема?</div>
<div dir="auto"><br></div>
<div dir="auto">Posted at Nginx Forum: https://forum.nginx.org/read.php?21,289759,289759#msg-289759</div>
<div dir="auto"><br></div>
<div dir="auto">_______________________________________________</div>
<div dir="auto">nginx-ru mailing list</div>
<div dir="auto">nginx-ru@nginx.org</div>
<div dir="auto">http://mailman.nginx.org/mailman/listinfo/nginx-ru</div>
</blockquote>
</div><div dir="auto"><br></div>
</div></body>
</html>