Nginx
如何使用沒有域名的公共 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
我從瀏覽器收到有關證書的消息
這里至少有三個明顯的問題。
告訴您證書中的
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
,取決於您的發行版。