curl : (60) SSL 인증서 문제 : 로컬 발급자 인증서를 가져올 수 없습니다


258
root@sclrdev:/home/sclr/certs/FreshCerts# curl --ftp-ssl --verbose ftp://{abc}/ -u trup:trup --cacert /etc/ssl/certs/ca-certificates.crt
* About to connect() to {abc} port 21 (#0)
*   Trying {abc}...
* Connected to {abc} ({abc}) port 21 (#0)
< 220-Cerberus FTP Server - Home Edition
< 220-This is the UNLICENSED Home Edition and may be used for home, personal use only
< 220-Welcome to Cerberus FTP Server
< 220 Created by Cerberus, LLC
> AUTH SSL
< 234 Authentication method accepted
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* 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: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.


비슷한 문제가 있습니다. 이것은 나를 위해 일했다 stackoverflow.com/a/29649024
Sagruob

제 경우에는 superuser.com/a/719047/137881이 도움이되었습니다.
압둘

//, 내 경우 엔 엔터티 / 중간체 / 루트가있는 X509 인증서를 역순으로 만 X509 인증서를 설치할 때까지 HashiCorp Vault 서버에 컬 요청을 할 때이 오류가 발생했습니다. 각각 Base64로 인코딩되었습니다.
Nathan Basanese

//, 여기에 오류를 복사하기 전에 어떤 연구를 했습니까?
Nathan Basanese

답변:


231

'SSL 인증서 문제 : 로컬 발급자 인증서를 가져올 수 없습니다'오류와 관련이 있습니다. 이는 요청을받는 서버가 아니라 CURL 요청을 보내는 시스템에 적용됩니다.

  1. https://curl.haxx.se/ca/cacert.pem 에서 최신 cacert.pem을 다운로드 하십시오.

  2. php.ini에 다음 줄을 추가하십시오 : (이것이 공유 호스팅이고 php.ini에 액세스 할 수 없다면 public_html의 .user.ini에 추가 할 수 있습니다).

    curl.cainfo="/path/to/downloaded/cacert.pem"

    경로를 큰 따옴표로 묶어야합니다 !!!

  3. 기본적으로 FastCGI 프로세스는 300 초마다 새 파일을 구문 분석합니다 (필요한 경우 https://ss88.uk/blog/fast-cgi-and-user-ini-에서 제안한대로 몇 개의 파일을 추가하여 빈도를 변경할 수 있음) files-the-new-htaccess / ).


1
첫 번째는 OpenSSL 라이브러리를 사용하여 수행 된 작업의 인증과 관련이 있습니다. cURL을 사용한 요청에 대한 두 번째
Mike

4
실제로 따옴표 안에 경로를 쓰지 않았기 때문에 한 시간 동안 어려움을 겪었습니다. 여기에 메모 해주세요curl.cainfo="/path/to/downloaded/cacert.pem" // Do not forget to write between quotes
Himanshu Upadhyay

12
PHP에 대한 질문에 대한 참조가 없습니다. 왜 대답에 참조가 있습니까? 질문이 편집 된 경우 지금 사용중인 명령 행을 반영하여 답변을 편집 할 수 있습니까?
Adam

5
@Adam이 질문에는 PHP에 대한 언급이 없지만, 이는 PHP에서 생성 된 특정 오류 메시지에 대한 Google의 검색 결과 # 1로 나타납니다. 따라서 OP의 질문에 구체적으로 대답하지는 않지만 여전히 커뮤니티에 유용한 것 같습니다.
rinogo

1
이 답변은 PHP와 관련된 솔루션이기 때문에 오해의 소지가있었습니다
Wasif Khan

141

cURL이 서버에서 제공 한 인증서를 확인할 수 없으므로 실패합니다.

이 작업을 수행하는 데는 두 가지 옵션이 있습니다.

  1. -kcurl이 안전하지 않은 연결을 할 수 있도록하는 cURL 옵션을 사용하십시오 . 즉 cURL은 인증서를 확인하지 않습니다.

  2. 루트 CA (서버 인증서를 서명하는 CA)를 다음에 추가하십시오. /etc/ssl/certs/ca-certificates.crt

보안 FTP 서버에 연결하려면 옵션 2를 사용해야합니다.


1
rootCA.pem 파일을 내부에 추가했습니다 :-root @ sclrdev : / home / certs / FreshCerts # ll /etc/ssl/certs/rootCA.pem -rwxrwxrwx 1 root root 1302 Jul 8 00:09 / etc / ssl / certs / rootCA.pem * 내 rootCA.pem을 사용하여 ServerCertificate.pem 파일을 확인했습니다. ca-certificates.crt 내의 rootCA.pem 내용 root @ sclrdev : / home / sclr / subhendu / certs / FreshCerts # ll /etc/ssl/certs/ca-certificates.crt -rw-r--r-- 1 루트 루트 247945 Jul 8 00:10 / etc / ssl /certs/ca-certificates.crt
user3812540

나는 내가 어디로 잘못 가고 있는지 알 수 없다. WireShark 추적에서 다음과 같은 오류가 발생합니다 .- 클라이언트 Hello 서버 Hello, 인증서, 서버 Hello 완료 경고 (레벨 : 치명적, 설명 : 알 수없는 CA (48)) 안내해 주시고 도와 주시겠습니까?
user3812540

openssl이 작동하는 방식은 확인 중에 인증서 체인을 완성하려고 시도하는 것입니다. 서버 인증서가 루트 CA가 아닌 중간 CA에 의해 서명되어 있습니까? 예를 들어
Yuvika

내 인증서는 루트 CA에 의해서만 서명됩니다.
user3812540

1
root @ sclrdev : ~ # openssl s_client -connect <server_ip> : 21 -showcerts CONNECTED (00000003) 3074050248 : error : 140770FC : SSL 루틴 : SSL23_GET_SERVER_HELLO : 알 수없는 프로토콜 : s23_clnt.c : 766 : --- 사용할 수있는 피어 인증서가 없습니다. --- 클라이언트 인증서가 없습니다. CA 이름이 전송되었습니다.-SSL 핸드 셰이크에서 7 바이트를 읽었고 225 바이트를 썼습니다. --- 새로운, (없음), 암호는 (없음) 없음 --- 이것이 정확히 무엇을 의미하는지 잘 모르겠습니다.
user3812540

69

cURL 스크립트에 한 줄 코드를 추가 하여이 문제를 해결했습니다.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

경고 : 요청이 절대적으로 안전하지 않습니다 (@YSU의 답변 참조)!


42
문제를 피하는 데 도움이 될 수 있습니다. 그러나 https와 인증 시스템에 대한 아이디어는 전혀 없습니다.
Stephan Richter

1
공장! 인증서를 신경 쓰지 않으면 멋진 빠른 n 더티 바이 패스
Gilly

2
이것은 완전히 안전하지 않습니다.
Moox

1
스테이징 서버에서 동일한 코드가 정상적으로 작동했지만 로컬 서버 에서이 문제에 직면했습니다. 그것이 현지에 있었던 것처럼 나를 위해 괜찮습니다. 감사합니다
sabin

1
로컬 서버에서만 사용할 수 있도록이 점검을 추가하십시오 if( stristr("127.0.0.1",$_SERVER["SERVER_NAME"] ) || stristr("localhost",$_SERVER["SERVER_NAME"] )) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Hussain

20

필자의 경우 cURL을 사용하려고하는 서비스에 인증서를 설치하는 데 문제가있는 것으로 나타났습니다. 중간 및 루트 인증서를 내 도메인 인증서에 번들 / 연결하지 못했습니다 . Chrome에서 중간 및 루트 인증서를 남기지 않고 문제를 해결하고 인증서를 수락했기 때문에 처음에는 이것이 문제라는 것이 분명하지 않았습니다.

인증서를 묶은 후 모든 것이 예상대로 작동했습니다. 나는 이렇게 묶었 다

$ cat intermediate.crt >> domain.crt

그리고 모든 중간 인증서와 루트 인증서에 대해 반복합니다.


2
Apache SSLCertificateChainFile을 올바른 인증서로 설정하지 않은 것을 제외하고는 비슷한 문제가있었습니다.
Wayne Piekarski

1
이 작업을 수행하고 추가하는 crt에 줄 바꿈이 없으면 -----END CERTIFICATE----------BEGIN CERTIFICATE-----번들 과 같은 줄 이 생기고 모호한 오류가 발생합니다.curl: (77) error setting certificate verify locations
Marty Neal

2
letsencrypt 인증서를 사용하고 있지만 서버에 인증서 및 개인 키만 배포했습니다. 컴퓨터의 Chrome 및 컬이 불만을 제기하지 않았지만 내가 빌드 한 nodejs 앱이 인증서를 수락하지 않았습니다. 서버에 풀 체인을 배포하면 문제가 해결되었습니다! 올바른 방향을 알려 주셔서 감사합니다!
Paulo Santos

필자의 경우 (comodo 인증서) 중간 인증서를 my-domain.ca-bundle로 보냈습니다. my-domain.crt에 추가해야했습니다. 감사!
Jon Hulka

18

나를 위해 간단한 인증서 설치가 도움이되었습니다.

sudo apt-get install ca-certificates

2
예를 들어, 일부 소형 도커 컨테이너에는이 패키지가 설치되어 있지 않을 수 있으며 전체 패키지가없는 경우 다른 문제를 해결할 필요가 없습니다.
muni764

16

Git Extensions v3.48을 설치 한 후이 문제가 발생했습니다. mysysgit을 다시 설치하려고 시도했지만 동일한 문제가 발생했습니다. 마지막으로 다음을 사용하여 SSL 보안을 비활성화하십시오 (보안 관련 사항을 고려하십시오!).

git config --global http.sslVerify false

그러나 도메인 인증서가 있으면 (Win7)에 추가하는 것이 좋습니다.

C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt

23
효과는 있지만 질병을 치료하지 않고 증상을 숨기는 것처럼 느낍니다.
MonoThreaded

4
SSL 확인 비활성화는 매우 위험합니다
jonasl

1
--global문제가있는 리포지토리에 대해서만 SSL을 비활성화 하지 않고 수행 할 수 있습니다. 현재 필요한 crt 파일에 대한 자세한 내용은 groups.google.com/forum/#!topic/git-for-windows/mlqn5J4OLlw 를 참조하십시오 .
koppor

13

최근에이 오류가 발생했습니다. 루트 저장소 인증서가 CA 저장소 디렉터리에 제대로 설치되지 않았기 때문입니다. CA 디렉토리를 직접 지정하는 curl 명령을 사용하고있었습니다. curl : (60) SSL 인증서 문제 : 로컬 발급자 인증서를 가져올 수 없을curl --cacert /etc/test/server.pem --capath /etc/test ... 때마다이 명령이 실패했습니다 .

strace curl ...curl을 사용한 후 curl은 openssl 해시 명명 대류를 기반으로 이름이 60ff2731.0 인 루트 인증서 파일을 찾고 있음을 확인했습니다. 따라서 루트 인증서를 올바르게 가져 오는이 명령을 찾았습니다.

ln -s rootcert.pem`openssl x509 -hash -noout -in rootcert.pem`.0

소프트 링크를 만듭니다

60ff2731.0-> rootcert.pem

curl에서 커버 아래에서 server.pem cert를 읽고 루트 인증서 파일 (rootcert.pem)의 이름을 판별하여 해시 이름으로 변환 한 다음 OS 파일 검색을 수행했지만 찾을 수 없었습니다.

따라서 테이크 아웃은 컬 오류가 모호 할 때 컬을 실행할 때 strace를 사용하고 (대단한 도움이 됨) openssl 명명 규칙을 사용하여 루트 인증서를 올바르게 설치하십시오.


2
휴, 도움이되었습니다. a) strace curl을 실행하십시오 ... b) 실패한 stat ()를 something-hex로 찾으십시오 .0 c) googled something-hex를 찾은 경우 해당 인증서를 찾았습니다 .d) found cert를 / usr /에 넣으십시오. local / share / ca-certificates / (* .pem이 작동하지 않기 때문에 * .crt 확장자를 가짐) e) update-ca-certificates를 실행하십시오. 빙고! -필요한 symlink가 / usr / lib / ssl / certs /에 자동으로 생성되었습니다.
No-Bugs Hare

11

서버에서 인증서가 누락되었을 가능성이 큽니다.

루트-> 중간-> 서버

서버는 서버 및 중급자를 최소로 보내야합니다.

openssl s_client -showcerts -starttls ftp -crlf -connect abc:21문제를 디버깅하는 데 사용하십시오 .

하나의 인증서 만 반환 된 경우 (자체 서명 또는 발급) 다음 중 하나를 선택해야합니다.

  1. 서버를 고정시키다
  2. 해당 인증서를 신뢰하고 CA 인증서 저장소에 추가하십시오 (최상의 아이디어는 아님)
  3. 신뢰 비활성화 curl -k( 예 : 매우 나쁜 생각)

서버가 둘 이상을 반환했지만 자체 서명 된 (루트) 인증서를 포함하지 않은 경우 :

  1. 이 체인의 CA 저장소에 CA (루트) 인증서를 설치하십시오 (예 : google 발행자). ( 그 CA를 신뢰하는 경우 에만 )
  2. 체인의 일부로 CA를 보내도록 서버를 고정
  3. 체인에서 인증서를 신뢰
  4. 신뢰 비활성화

서버가 루트 CA 인증서를 반환 한 경우 해당 인증서가 CA 저장소에없는 경우 옵션은 다음과 같습니다.

  1. 그것을 추가 (신뢰)
  2. 신뢰 비활성화

인증서를 나타내는 메시지가 없기 때문에 만료 / 취소 된 인증서를 무시했습니다. 그러나 당신은 인증서를 검사 할 수 있습니다openssl x509 -text

홈 에디션 ( https://www.cerberusftp.com/support/help/installing-a-certificate/ ) ftp 서버에 연결한다고 가정 하면 자체 서명되었다고 말할 것입니다.

openssl의 출력과 같은 자세한 내용을 게시하십시오.


6

cURL 문서 에 따르면 인증서를 다음 curl명령으로 전달할 수도 있습니다 .

원격 서버를 확인할 수있는 CA 인증서를 가져오고 적절한 옵션을 사용하여 연결시 확인할 CA 인증서를 지정하십시오. 의 경우 libcurl해커 :curl_easy_setopt(curl, CURLOPT_CAPATH, capath);

curl 명령 행 도구를 사용하여 : --cacert [file]


예를 들면 다음과 같습니다.

curl --cacert mycertificate.cer -v https://www.stackoverflow.com

5

인증서 목록 만 업데이트하면 충분할 수 있습니다.

sudo update-ca-certificates -f

update-ca-certificates는 SSL 인증서를 보유하도록 / etc / ssl / certs 디렉토리를 업데이트하고 연결된 단일 파일 인증서 목록 인 ca-certificates.crt를 생성하는 프로그램입니다.


그것을하고 모든 것을 실행 한 후에 완료됩니다. 그러나 컬이 작동하지 않습니다. 여전히 같은 오류입니다.
AGamePlayer

1
나는 명령을 내 렸는데 도움이되지 않았으며 위의 모든 것을해야한다고 믿을 수 없었습니다. 그리고 당신의 대답 ... '-f'플래그 주셔서 감사합니다.
Alex Shtromberg

1
이것이 내가 온 해결책입니다. +1
SS Anne

3

우분투에서 curl을 다시 설치하고 인증서를 업데이트 한 내 CA 인증서 sudo update-ca-certificates --fresh를 업데이트하십시오.


2

Windows 에서이 문제가 발생했습니다. Curl은 mysysgit에 의해 설치되었으므로 최신 버전을 다운로드하여 설치하면 문제가 해결되었습니다.

그렇지 않으면 시도 할 수있는 CA 인증서를 업데이트하는 방법에 대한 적절한 지침 입니다.


2

예, CA 인증서도 추가해야합니다. 명확한보기를 위해 Node.js에 코드 스 니펫 추가

var fs = require(fs)
var path = require('path')
var https = require('https')
var port = process.env.PORT || 8080;
var app = express();

https.createServer({
key: fs.readFileSync(path.join(__dirname, './path to your private key/privkey.pem')),
cert: fs.readFileSync(path.join(__dirname, './path to your certificate/cert.pem')),
ca: fs.readFileSync(path.join(__dirname, './path to your CA file/chain.pem'))}, app).listen(port)

2

이 문제도 발생했습니다. 이 스레드를 읽었으며 대부분의 답변은 유익하지만 지나치게 복잡합니다. 나는 네트워킹 주제에 경험이 없으므로이 답변은 나와 같은 사람들을위한 것입니다.

필자의 경우이 오류는 응용 프로그램에서 사용중인 인증서 옆에 중간 및 루트 인증서를 포함하지 않았기 때문에 발생했습니다.

다음은 SSL 인증서 공급 업체로부터 얻은 것입니다.

- abc.crt
- abc.pem
- abc-bunde.crt

에서 abc.crt파일을 하나의 인증서가 있었다 :

-----BEGIN CERTIFICATE-----
/*certificate content here*/
-----END CERTIFICATE-----

이 형식으로 제공하면 브라우저에 오류 (Firefox)가 표시되지 않지만 curl: (60) SSL certificate : unable to get local issuer certificatecurl 요청을 수행하면 오류가 발생합니다.

이 오류를 해결하려면 abc-bunde.crt파일을 확인하십시오 . 다음과 같이 보일 것입니다.

-----BEGIN CERTIFICATE-----
/*additional certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*other certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*different certificate content here*/
-----END CERTIFICATE-----

이들은 중간 및 루트 인증서입니다. 응용 프로그램에 제공하는 SSL 인증서에 누락되어 오류가 발생했습니다.

오류를 수정하려면 다음 두 파일의 내용을 다음 형식으로 결합하십시오.

-----BEGIN CERTIFICATE-----
/*certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*additional certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*other certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*different certificate content here*/
-----END CERTIFICATE-----

인증서 사이, 파일의 끝 또는 시작 부분에는 공백이 없습니다. 이 결합 된 인증서를 응용 프로그램에 제공하면 문제를 해결해야합니다.


1

Windows에서-cmd에서 실행하는 경우

> curl -X GET "https://some.place"

https://curl.haxx.se/docs/caextract.html 에서 cacert.pem을 다운로드 하십시오.

환경 변수를 설정하십시오.

CURL_CA_BUNDLE = C:\Program Files\curl-7.57.0\src\cacert.pem

환경을 다시로드

refreshenv

이제 다시 시도하십시오

문제의 원인 : https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate/replies/95548


1

제 사건은 달랐습니다. 방화벽 뒤에 사이트를 호스팅하고 있습니다. pfSense로 인해 오류가 발생했습니다.

Network layout: |Web Server 10.x.x.x| <-> |pfSense 49.x.x.x| <-> |Open Internet|

이 답변 덕분에 우연히 원인을 찾았습니다 .


내 사이트에 액세스하면 모든 것이 잘됩니다.WAN에서 .

그러나 사이트가 LAN 내부에서 액세스 된 경우 (예 : curlWAN IP 사용에도 불구하고 Wordpress가 자체 서버에 요청한 49.x.x.x경우) pfSense 로그인 페이지가 제공되었습니다.

인증서를로 식별했습니다 pfSense webConfigurator Self-Signed Certificate. 당연히 curl오류가 발생했습니다.

원인 : 한 그 무슨 일이 있었는지 curl사이트의 WAN IP 주소를 사용하고 있었다 49.x.x.x. 그러나 웹 서버와 관련하여 WAN IP는 방화벽이었습니다.

디버그 : pfSense 인증서를 받고 있음을 알았습니다.

해결 방법 : 사이트를 호스팅하는 서버에서 자체 도메인 이름을 127.0.0.1로 지정하십시오.

의 솔루션을 적용함으로써 님 curl의 요청이 웹 서버에서 올바르게 처리되었으며 로그인 페이지를 전송하여 응답 한 방화벽으로 전달되지 않았습니다.


0

이것은 ssh 인증서 저장소 문제입니다. 대상 CA 웹 사이트에서 유효한 인증서 pem 파일을 다운로드 한 다음 소프트 링크 파일을 빌드하여 ssl에게 신뢰할 수있는 인증을 지시해야합니다.

openssl x509 -hash -noout -in DigiCert_Global_Root_G3.pem

당신은 얻을 것이다 dd8e9d41

해시 번호로 solf 링크를 빌드하고 파일에 .0 (점 0)으로 접미사

dd8e9d41.0

그런 다음 다시 시도하십시오.


0
  1. https://curl.haxx.se/ca/cacert.pem 다운로드

  2. 다운로드 후이 파일을 wamp 서버로 이동하십시오.

    특급 : D : \ wamp \ bin \ php \

  3. 그런 다음 하단의 php.ini 파일에 다음 줄을 추가하십시오.

curl.cainfo = "D : \ wamp \ bin \ php \ cacert.pem"

  1. 이제 wamp 서버를 다시 시작 하십시오.

0

Perl HTTPS 데몬과 동일한 문제가있는 서버 인증서를에서 cert.pem로 변경 해야합니다.fullchain.pem


SSL_cert_file => '/etc/letsencrypt/live/mydomain/cert.pem'

SSL_cert_file => '/etc/letsencrypt/live/mydomain/fullchain.pem'


-1

지금 까지이 문제는 회사 네트워크 내에서 두 가지 이유로 발생하는 것으로 나타났습니다.이 중 하나 또는 둘 모두가 귀하의 경우에 발생할 수 있습니다.

  1. 네트워크 프록시가 작동 하는 방식으로 인해 자체 프록시 인증서가 있으므로 컬 인증서가 변경됩니다. 대부분 또는 대부분의 엔터프라이즈 네트워크는 이러한 프록시를 사용하도록합니다.
  2. 클라이언트 PC에서 실행되는 일부 바이러스 백신 프로그램 도 HTTPS 프록시와 유사하게 작동하여 네트워크 트래픽을 검색 할 수 있습니다. 바이러스 백신 프로그램에이 기능을 비활성화하는 옵션이있을 수 있습니다 (관리자가 허용한다고 가정).

참고로, 위의 2 번은 아마도 안전한 TLS 트래픽이 검색되는 것을 불안하게 만들 수 있습니다. 그것이 당신을위한 회사 세계입니다.


-1

그 문제가 있었고 새로운 버전으로 해결되지 않았습니다. / etc / certs는 루트 인증서를 가지고 있었고 브라우저는 모든 것이 정상이라고 말했습니다. 몇 가지 테스트 후 ssllabs.com에서 내 체인이 완료되지 않았다는 경고를 받았습니다 (실제로 새 인증서가 아닌 이전 인증서의 체인이었습니다). 인증서 체인을 수정 한 후 컬을 사용해도 모든 것이 잘되었습니다.


-1

모든 CA의 Digicert 에서이 문제가 발생했습니다. 중간 파일과 루트 파일을 하나의 파일에 붙여 넣은 digicertca.pem 파일을 만들었습니다.

curl https://cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
curl https://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crt.pem

curl -v https://mydigisite.com/sign_on --cacert DigiCertCA.pem
...
*  subjectAltName: host "mydigisite.com" matched cert's "mydigisite.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA
*  SSL certificate verify ok.
> GET /users/sign_in HTTP/1.1
> Host: mydigisite.com
> User-Agent: curl/7.65.1
> Accept: */*
...

Eorekan은 답변을 받았지만 자신과 다른 사람 만이 자신의 답변에 투표 할 수있었습니다.


-2

특히Windows 사용자를 위해 curl-7.57.0-win64-mingw또는 유사한 버전을 사용합니다.

이것은 약간 늦었고 기존 답변이 정확합니다. 그러나 프로세스가 실제로 매우 간단하지만 여전히 내 Windows 컴퓨터에서 작동하게하려면 약간의 노력이 필요했습니다. 따라서 단계별 프로세스를 공유하십시오.

이 오류는 기본적으로 curl이 대상 URI의 인증서를 확인하지 못했음을 의미합니다. 인증서 발급자 (CA)를 신뢰하는 경우 신뢰할 수있는 인증서 목록에 추가 할 수 있습니다.

이를 위해 URI (예 : Chrome)를 탐색하고 단계를 따릅니다.

  1. 보안 자물쇠 아이콘을 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 인증서를 클릭하면 인증서 세부 정보가 표시된 창이 열립니다.
  3. '인증 경로'탭으로 이동
  4. 루트 인증서를 클릭하십시오
  5. 인증서보기를 클릭하면 다른 인증서 창이 열립니다.
  6. 세부 사항 탭으로 이동
  7. 파일로 복사를 클릭하면 내보내기 마법사가 열립니다.
  8. 다음을 클릭하십시오
  9. 'Base-64로 인코딩 된 X.509 (.CER)'를 선택하십시오.
  10. 다음을 클릭하십시오
  11. 친숙한 이름을 지정하십시오 (예 : 'MyDomainX.cer'(원하는 디렉토리로 이동))
  12. 다음을 클릭하십시오
  13. Finish를 클릭하면 인증서 파일이 저장됩니다.
  14. 이제이 .cer파일을 열고 내용을 복사하십시오 (------ BEGIN CERTIFICATE ----- 및 ----- END CERTIFICATE ----- 포함).
  15. 이제 curl.exe저장된 디렉토리로 이동하십시오. 예 :C:\SomeFolder\curl-7.57.0-win64-mingw\bin
  16. 열기 curl-ca-bundle.crt텍스트 편집기를 사용하여 파일을
  17. 복사 된 인증서 텍스트를 파일 끝에 추가하십시오. 저장

이제 명령이 말려서 잘 실행됩니다.


3
downvote의 이유에 대한 의견을
부탁

"C : \ xampp \ apache \ bin"(windows)에서 "curl-ca-bundle.crt"라는 파일을 찾을 수 없습니다. 다운 투표가 이것으로 인한 것 같아요. 위에서 언급 한 "bin"폴더에 "curl.exe"가 있습니다.
kathikeyan A

-4

이것은 총구에 도움이 될 수 있습니다.

$client = new Client(env('API_HOST'));
$client->setSslVerification(false);

구글 / 구글 3. *에서 테스트


-5

간단한 솔루션 : IN ~/.sdkman/etc/config, 변경sdkman_insecure_ssl=true

단계 : 저장 및 종료 를 위한
나노 ~/.sdkman/etc/config
변경sdkman_insecure_ssl=falsesdkman_insecure_ssl=true

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.