Как сделать безопасный запрос?

С сегодняшнего утра я пытаюсь имитировать запрос POST в моей удаленной базе данных с протоколом https, потому что я установил сертификат ssl. (мой сайт защищен).

https://example.com/api/v1/data_tag

Но когда я пытаюсь отправить запрос Postman в свою базу данных в безопасном режиме, я получаю эту ошибку:

SSL Error: Unable to verify the first certificate

Когда я удаляю «s» из https в своем URL-адресе, запрос выполняется правильно.

http://biotagsensor.com:3000/api/v1/data_tag

Я настроил брандмауэры своего сервера следующим образом:

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere
80/tcp (Nginx HTTP)        ALLOW IN    Anywhere
3000                       ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp (v6)                ALLOW IN    Anywhere (v6)
443/tcp (v6)               ALLOW IN    Anywhere (v6)
80/tcp (Nginx HTTP (v6))   ALLOW IN    Anywhere (v6)
3000 (v6)                  ALLOW IN    Anywhere (v6)

а вот файл nginx по умолчанию:

upstream backend {
        server localhost:3000;
}

server {
  listen 80;
  rewrite ^ https://$host$request_uri? permanent;
}

server {
#        listen 80 default_server;
#        listen [::]:80 default_server;

        listen 443 ssl;

        ssl_certificate /home/debian/site.com.chain.pem;
        ssl_certificate_key /home/debian/myserver.key;

        root /home/debian/site.com/dist;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location  ^~ /api {
               proxy_redirect off;
               proxy_http_version 1.1;
               proxy_pass http://backend;
               proxy_set_header Host $host ;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }


        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

}

Вы знаете, откуда это может взяться?


64
2

Ответы:

 http://ipadress:3000/api/v1/data_tag

Это ваш внутренний сервер, на котором не включен HTTPS. Вы даже обращаетесь к этому серверу явно с помощью простого HTTP из вашего nginx:

           proxy_pass http://backend;

Если вы хотите использовать HTTPS, настроенный в nginx, вам нужно использовать порт, настроенный для HTTPS в nginx, т.е.

  https://example.com:443/api/v1/data_tag

Или проще, так как 443 — порт по умолчанию для https:

  https://example.com/api/v1/data_tag

example.com в данном случае это заполнитель для вашего домена, настроенный для вашего сервера и внутри сертификата.


Решено

Похоже, у вас неправильно настроен промежуточный сертификат. Убедитесь, что site.com.chain.pem имеет правильный контент и правильный путь к нему.