Назад | Перейти на главную страницу

Ошибка: сертификат однорангового узла не может быть аутентифицирован с помощью данных сертификатов CA NGINX, TOMCAT 8 и GOGS с сертификатом CA

Я пытаюсь настроить VPS на Ubuntu Server 18.04, на котором я установил GOGS, JENKINS и TOMCAT. С Nginx я разрешаю делать только запросы https, но когда я делаю из Insomnia веб-службу api, развернутую в Tomcat, я получаю сообщение «сертификат однорангового узла не может быть аутентифицирован с помощью заданных сертификатов CA». Это то же самое сообщение, что и при отправке фиксации в репозиторий Gogs. Сертификат ssl подписан центром сертификации. Я не знаю, что происходит, но для начала я использую конфигурацию 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

Через неделю я нашел решение своей проблемы. Ошибка заключалась в том, что в файле certificate.crt не была объединена подпись CA.

Я не знал, но для Nginx необходимо объединить все сертификаты в один файл. Сертификат для домена (* .crt) должен быть указан первым в файле, а затем цепочка сертификатов CA (* .ca-bundle). Я поставил сертификат только для своего домена (* .ctr), поэтому центр сертификации не был найден.

Я заставил это работать, объединив два сертификата в один с помощью следующей команды linux:

cat certificate.ca-bundle >> certificate.crt