cURL이 인증서를 인식하지 못합니다.

cURL이 인증서를 인식하지 못합니다.

우리 회사에서는 SSL 연결을 끊고 인증서를 가짜 인증서로 교체하는 네트워크 프록시를 시행합니다. (정확히 말하면 회사의 인증서가 서명된 대리 인증서를 사용합니다.)

따라서 https URL에서 다운로드하려면 시스템이 가짜 인증서를 신뢰하도록 해야 합니다(또는 인증서 확인을 비활성화해야 합니다).

그래서 프록시 인증서와 회사 인증서를 모두 /etc/ssl/certs/ca-bundle.crt및 에 추가했습니다 /etc/ssl/certs/ca-certificates.crt. (둘 다 같은 파일에 연결되어 있습니다.)

이제 다운로드를 사용하면 wget제대로 작동하지만 인증서를 확인할 수 없기 curl때문에 다운로드를 사용하면 작동하지 않습니다 .curl

* Rebuilt URL to: https://company.net/
* Hostname was NOT found in DNS cache
*   Trying 172.18.111.111...
* Connected to 172.18.111.111 (172.18.111.111) port 3128 (#0)
* Establish HTTP proxy tunnel to company.net:443
> CONNECT company.net:443 HTTP/1.1
> Host: company.net:443
> User-Agent: curl/7.39.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
<
* Proxy replied OK to CONNECT request
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-bundle.crt
  CApath: none
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem: self signed certificate in certificate chain
* Closing connection 0
curl: (60) SSL certificate problem: self signed certificate in certificate chain

무엇이 잘못될 수 있나요? 추가로 디버깅하는 방법은 무엇입니까?

답변1

다음과 같이 인증서에 대해 nix에 알려야 합니다.

security.pki.certificates = [''cert strings go here in PEM format''];

즉:

 security.pki.certificates = [
    ''

      -----BEGIN CERTIFICATE-----
<CUT>
      -----END CERTIFICATE-----
    ''
 ];

원하는 경우 이러한 항목을 많이 추가할 수 있습니다. 그러면 포함된 인증서가 시스템 인증서 저장소에 추가되며, 추가 명령줄 인수 없이 컬에서 사용해야 합니다.

관련 정보