我有一个公共 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
,具体取决于您的发行版。