cURL локальный GO сервер, использующий самозаверяющий сертификат - PullRequest
0 голосов
/ 17 января 2020

Итак, у меня есть простой GO сервер, работающий на порту 8080 с использованием самозаверяющего сертификата, который я создал с помощью следующей команды:

openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out local.crt -keyout local.key

При его создании я установил в поля следующие значения: enter image description here
Как видите, я пропустил все, кроме fully qualified host name, которое я установил go-auth

Я запустил go сервер успешно использует файлы local.key и local.crt.

Я попытался cURLing , например:

➜  certs git:(master) ✗ curl --proxy-cacert local.crt https://go-auth/
curl: (6) Could not resolve host: go-auth

➜  certs git:(master) ✗ curl --proxy-cacert local.crt https://localhost:8080/
curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

После этого я попытался получить сертификаты от работающий сервер и сохранив его в файл cacert.pem и повторив попытку:

➜  certs git:(master) ✗ echo quit | openssl s_client -showcerts -servername go-auth -connect localhost:8080 > cacert.pem
depth=0 CN = go-auth
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = go-auth
verify return:1
DONE

➜  certs git:(master) ✗ curl --cacert cacert.pem https://go-auth/
curl: (6) Could not resolve host: go-auth

➜  certs git:(master) ✗ curl --proxy-cacert cacert.pem https://go-auth/
curl: (6) Could not resolve host: go-auth

На данный момент я не знаю, я пытался найти ответ на этот вопрос : Использовать самоподписанный сертификат с cURL? , но не получил желаемого результата.

1 Ответ

1 голос
/ 17 января 2020

Вы можете использовать параметр -k, чтобы пропустить проверку сертификата.

Ваша команда должна быть похожа на следующую:

curl -vk https://localhost:8080/
  • -v включить некоторую отладочную информацию
  • -k отключить проверку сертификата

Если вы хотите включить проверку сертификата, у вас есть два пути:

  • Добавьте сертификат в свой текущий список сертификатов и доверяйте ему
    Таким образом, вы собираетесь «принять» свой самоподписанный сертификат как действительный, и вы сможете вызвать службу (с очевидно, что ваш компьютер) использует любой тип HTTP-клиента (Java, Go, cURL et c et c).

  • Используйте параметр --cacert команда cURL для указания сертификата, который будет использоваться для аутентификации в сервисе.

...