错误:无法使用给定的 CA 证书对对等证书进行身份验证 NGINX、TOMCAT 8 和具有 CA 证书的 GOGS

错误:无法使用给定的 CA 证书对对等证书进行身份验证 NGINX、TOMCAT 8 和具有 CA 证书的 GOGS

我正在尝试在 Ubuntu Server 18.04 上配置 VPS,我已经安装了 GOGS、JENKINS 和 TOMCAT。使用 Nginx,我只允许发出 https 请求,但当我从 Insomnia 向部署在 Tomcat 中的 api web 服务发出请求时,我收到消息“无法使用给定的 ca 证书对对等证书进行身份验证”。这与我在 Gogs 存储库中推送提交时的消息相同。ssl 证书由 CA 签名。我不知道发生了什么,但我分享了 Nginx 和 Gogs 配置以开始使用。

Nginx 配置:

upstream tomcat {
    server 127.0.0.1:8081 weight=100 max_fails=5 fail_timeout=5;
}

server {
    listen 443 ssl;
    server_name serverName;

    ssl_certificate /etc/nginx/ssl/certificate.crt;
    ssl_certificate_key /etc/nginx/ssl/certificate.key;

    root /var/www;
    index index.php;

    # TOMCAT8
    location /manager {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://tomcat/manager;
    }
    location /test {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://tomcat/test;
    }
    location ~ \.jsp$ {
       proxy_pass http://127.0.0.1:8081;
       proxy_set_header Host $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Server-Proto $server_protocol;
    }

    # GOGS
    location /gogs/ {
        # Proxy headers
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;

        # Log files
        access_log /var/log/nginx/gogs.access.log;
        error_log /var/log/nginx/gogs.error.log;

        # Redirect
        proxy_pass http://localhost:3000/;
    }
}

Gogs 服务器配置:

[server]
DOMAIN           = localhost
HTTP_PORT        = 3000
ROOT_URL         = https://serverName/gogs/
DISABLE_SSH      = false
SSH_PORT         = 22
START_SSH_SERVER = false
OFFLINE_MODE     = false

答案1

一周后,我找到了问题的解决方案。错误在于 certificate.crt 文件没有连接 CA 签名。

我不知道,但对于 Nginx,需要将所有证书合并到一个文件中。域的证书 (*.crt) 必须首先列在文件中,然后是 CA 证书链 (*.ca-bundle)。我只放了我的域的证书 (*.ctr),因此找不到 CA 颁发机构。

我通过使用以下 Linux 命令将两个证书连接成一个来使其工作:

cat certificate.ca-bundle >> certificate.crt

相关内容