Назад | Перейти на главную страницу

Как настроить https с nginx с публичным ip без доменного имени

У меня есть общедоступный IP-адрес (например, 123.123.123.123), и я хотел бы установить ssl на сервере nginx (для использования https). У меня есть папка в /etc/nginx/ssl где я храню свой .crt и .key. Вот мой nginx.conf :

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {

    server_tokens off;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    client_max_body_size 2M;

    include /etc/nginx/conf.d/*.conf;

    server {
        #listen       443 ssl http2 default_server;
        #listen       [::]:443 ssl http2 default_server;
        listen 443 ssl;
        server_name  _;
        root         /usr/share/nginx/html;


        add_header X-Frame-Options "SAMEORIGIN";

        ssl_certificate "/etc/nginx/ssl/site_bundle.crt";
        ssl_certificate_key "/etc/nginx/ssl/site.key";
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
        ssl_prefer_server_ciphers on;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

У меня следующая ошибка:

В моей папке SSL есть разные файлы, но я не знаю, какой из них использовать:

 - 12ae1782cad698c6.crt
 - a61d9dc8af1i5477.crt
 - dhparam.pem
 - gd_bundle-g2-g1.crt
 - domain_bundle.crt
 - domain.key

Я получил это сообщение от своего браузера о сертификате

Здесь есть как минимум три очевидных вопроса.

В NET::ERR_CERT_COMMON_NAME_INVALID сообщает вам, что имя в сертификате не совпадает с именем, которое вы запросили в браузере. В этом есть смысл, поскольку общее имя сертификата равно *.domain.com пока вы запрашиваете по IP-адресу. Они никогда не совпадут. Вы не даете достаточно информации в своем вопросе, чтобы я мог предложить решение, но, как следует из сообщения об ошибке, имена должны совпадать. Либо у вас должно быть DNS-имя вместо IP-адреса, либо сертификат с IP-адресом вместо имени.

Обратите внимание, что современные браузеры на самом деле не используют CommonName в сертификате (хотя сообщение об ошибке подразумевает, что они используют). Вместо этого они используют расширение SubjectAlternativeName, которое можно увидеть, если щелкнуть вкладку Details и прокрутить вниз.

Кроме того, ваш сертификат действителен только с 15 августа 2017 года по 15 августа 2018 года. Когда я пишу это, это 15 февраля 2019 года, что не совпадает между этими двумя датами. То есть у вашего сертификата также истек срок действия.

Ваш браузер возвращает 403 - Запрещено. Проверьте права доступа к файлам в корневом веб-каталоге (/usr/share/nginx/html), чтобы убедиться, что они доступны для чтения пользователю / группе, запускающей nginx. Может быть www-data, в зависимости от вашего дистрибутива.