如何使用没有域名的公网ip使用nginx配置https

如何使用没有域名的公网ip使用nginx配置https

我有一个公共 IP(例如:123.123.123.123),我想在 nginx 服务器上安装 SSL(用于使用 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

我从浏览器收到有关证书的消息

在此处输入图片描述 在此处输入图片描述

答案1

这里至少有三个明显的问题。

告诉NET::ERR_CERT_COMMON_NAME_INVALID您证书中的名称与您在浏览器中请求的名称不匹配。这完全有道理,因为证书的 CommonName 为,*.domain.com而您是通过 IP 地址请求的。它们永远不会匹配。您在问题中提供的信息不足以让我提出解决方案,但正如错误消息所暗示的那样,名称必须匹配。您必须拥有 DNS 名称而不是 IP,或者证书具有 IP 地址而不是名称。

请注意,现代浏览器实际上并不使用证书中的 CommonName(即使错误消息暗示它们会使用)。相反,它们使用 SubjectAlternativeName 扩展,如果您单击“详细信息”选项卡并向下滚动,就可以看到它。

此外,您的证书仅在 2017 年 8 月 15 日至 2018 年 8 月 15 日之间有效。我写这篇文章时,日期是 2019 年 2 月 15 日,不介于这两个日期之间。也就是说,您的证书也已过期。

您的浏览器返回 403 - 禁止访问。请检查 Web 根目录 ( /usr/share/nginx/html) 上的文件权限,以确保运行 nginx 的用户/组可以读取它们。可能www-data,具体取决于您的发行版。

相关内容