<!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>