Nginx

如何使用沒有域名的公共 ip 使用 nginx 配置 https

  • February 15, 2019

我有一個公共 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

我從瀏覽器收到有關證書的消息

在此處輸入圖像描述 在此處輸入圖像描述

這里至少有三個明顯的問題。

告訴您證書中的NET::ERR_CERT_COMMON_NAME_INVALID名稱與您在瀏覽器中請求的名稱不匹配。這是完全有意義的,因為*.domain.com當您通過 IP 地址請求時,證書的 CommonName 為 。他們永遠不會匹配。您在問題中沒有提供足夠的資訊,無法讓我提出解決方案,但正如錯誤消息所示,名稱必須匹配。要麼你必須有一個 DNS 名稱而不是 IP,要麼是一個帶有 IP 地址而不是名稱的證書。

請注意,現代瀏覽器實際上並沒有在證書中使用 CommonName(即使錯誤消息暗示他們這樣做)。相反,他們使用 SubjectAlternativeName 擴展,如果您點擊“詳細資訊”選項卡並向下滾動,您可以看到它。

此外,您的證書僅在 2017 年 8 月 15 日至 2018 年 8 月 15 日期間有效。在我寫這篇文章時,它是 2019 年 2 月 15 日,這兩個日期之間不合適。也就是說,您的證書也已過期。

您的瀏覽器返回 403 - Forbidden。檢查 web 根 ( /usr/share/nginx/html) 上的文件權限,以確保執行 nginx 的使用者/組可以讀取它們。也許www-data,取決於您的發行版。

引用自:https://serverfault.com/questions/954103