curl: (60) SSL sertifikası sorunu: yerel yayıncı sertifikası alınamıyor


259
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.


Benzer bir sorun yaşadım. Bu benim için çalıştı stackoverflow.com/a/29649024
Sagruob

Benim durumumda, superuser.com/a/719047/137881 yardımcı oldu.
Abdull

//, Benim durumumda, son varlık / Intermediates / root ile X509 sertifikasını yalnızca ters sırada, her biri Base64 olarak kodlanmış bir X509 sertifikası yükleyene kadar HashiCorp Vault sunucusuna kıvrılma istekleri yaparak bu hatayı aldım.
Nathan Basanese

//, Hatayı buraya kopyalamadan önce bu konuda ne yaptınız?
Nathan Basanese

Yanıtlar:


232

'SSL sertifikası sorunu: yerel yayıncı sertifikası alınamıyor' hatası ile ilgili. Bunun CURL isteğini gönderen sistem için geçerli olduğunu ve isteği alan sunucu için geçerli olmadığını belirtmek önemlidir.

  1. En son cacert.pem dosyasını https://curl.haxx.se/ca/cacert.pem adresinden indirin.

  2. Aşağıdaki satırı php.ini'ye ekleyin: (eğer bu hosting paylaşılıyorsa ve php.ini'ye erişiminiz yoksa bunu public_html içinde .user.ini dosyasına ekleyebilirsiniz).

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

    Yolu çift tırnak içine aldığınızdan emin olun !!!

  3. Varsayılan olarak, FastCGI işlemi her 300 saniyede bir yeni dosyaları ayrıştıracaktır (gerekirse burada önerildiği gibi birkaç dosya ekleyerek frekansı değiştirebilirsiniz https://ss88.uk/blog/fast-cgi-and-user-ini- yeni-htaccess dosyaları / ).


1
Birincisi OpenSSL kütüphanesi kullanılarak gerçekleştirilen işlemlerin sertifikalandırılması ile ilgilidir; ikincisi cURL kullanılarak yapılan isteklere
Mike

4
Aslında tırnak içinde yol yazmadığım için bir saat uğraştım. Lütfen buraya not alıncurl.cainfo="/path/to/downloaded/cacert.pem" // Do not forget to write between quotes
Himanshu Upadhyay

12
PHP için herhangi bir referans görmüyorum. Cevapta neden referanslar var? Soru düzenlenmişse, cevap şu anda kullanılan komut satırını yansıtacak şekilde düzenlenebilir mi?
Adam

5
@Adam Soru PHP'den bahsetmiyor olsa da, bu PHP tarafından üretilen belirli hata mesajı için Google'da bir numaralı arama sonucu olarak karşımıza çıkıyor. Belki de OP'nin sorusuna özel olarak cevap vermiyor, ancak topluluk için hala yararlı görünüyor.
rinogo

1
PHP ile ilgili bir çözüm olduğu için bu cevap benim için yanıltıcıydı
Wasif Khan

142

CURL, sunucu tarafından sağlanan sertifikayı doğrulayamadığından başarısız oluyor.

Bunun işe yaraması için iki seçenek vardır:

  1. Curl'un -kgüvenli olmayan bağlantılar yapmasına izin veren cURL seçeneğini kullanın , yani cURL sertifikayı doğrulamaz.

  2. Kök CA'yı (sunucu sertifikasını imzalayan CA) /etc/ssl/certs/ca-certificates.crt

Güvenli FTP sunucusuna bağlanmanızı sağlayan seçenek olduğu için 2. seçeneği kullanmalısınız.


1
RootCA.pem dosyamı içine ekledim: - root @ sclrdev: / home / certs / FreshCerts # ll /etc/ssl/certs/rootCA.pem -rwxrwxrwx 1 kök kökü 1302 Tem 8 00:09 / etc / ssl / certs / rootCA.pem * bile rootCA.pem ile ServerCertificate.pem dosyasını doğruladım: - root @ sclrdev: / home / certs / FreshCerts # openssl doğrula -CAfile rootCA.pem ../ServerCertificate.pem ServerCertificate.pem: Tamam Ve ayrıca ca-certificate.crt içindeki rootCA.pem içeriği. root @ sclrdev: / home / sclr / subhendu / certs / FreshCerts # ll /etc/ssl/certs/ca-certificates.crt -rw-r - r-- 1 kök kökü 247945 Temmuz 8 00:10 / etc / ssl /certs/ca-certificates.crt
user3812540

Nerede yanlış gittiğimi anlayamıyorum. WireShark izlemelerinde aşağıdaki hatayı alıyorum: - İstemci Merhaba Sunucu Merhaba, Sertifika, Sunucu Merhaba Bitti Uyarısı (düzey: Ölümcül, Açıklama: bilinmeyen CA (48)) Lütfen bana yol gösterebilir ve bana bu konuda yardımcı olabilir misiniz?
user3812540

Openssl'in çalışma şekli, doğrulama sırasında sertifika zincirini tamamlamaya çalışmasıdır. Sunucu sertifikanız kök CA tarafından değil, geçici bir CA tarafından imzalanmış mı? örneğin
Yuvika

Sertifikam yalnızca kök CA tarafından imzalandı.
user3812540

1
Bazı hatalar aldım: - root @ sclrdev: ~ # openssl s_client -connect <server_ip>: 21 -showcerts CONNECTED (00000003) 3074050248: hata: 140770FC: SSL rutinleri: SSL23_GET_SERVER_HELLO: bilinmeyen protokol: s23_clnt.c: 766: --- eş sertifikası yok --- İstemci sertifikası CA adı gönderilmedi --- SSL anlaşması 7 bayt okudu ve 225 bayt yazdı --- Yeni, (YOK), Şifre (YOK) Güvenli Yeniden Paylaşma desteklenmiyor Sıkıştırma: YOK Genişleme: HİÇBİR --- Bunun tam olarak ne anlama geldiğinden emin değilim?
kullanıcı3812540

69

Ben cURL komut dosyasına bir satır kodu ekleyerek bu sorunu çözdü:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Uyarı : Bu, talebi mutlak güvensiz hale getirir (@YSU tarafından verilen cevaba bakınız)!


42
Bu, sorunu atlatmaya yardımcı olabilir. Ancak https ve sertifikasyon sistemini tamamen kaçırıyor.
Stephan Richter

1
İşler! Sertifika umursamıyorsanız güzel hızlı n kirli bypass
Gilly

2
Bu tamamen güvensiz hale getirir.
Moox

1
Aynı kod sunucuyu hazırlama iyi çalıştı ama yerel sunucumda bu sorunla karşı karşıya idi. Yerel olarak benim için iyi. Teşekkürler
sabin

1
bu denetimi yalnızca yerel sunucuyla kullandığınızdan emin olmak için ekleyin if( stristr("127.0.0.1",$_SERVER["SERVER_NAME"] ) || stristr("localhost",$_SERVER["SERVER_NAME"] )) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Hussain

20

Benim durumumda, cURL ile tüketmeye çalıştığım hizmete sertifikamın yüklenmesi ile ilgili bir sorun olduğu ortaya çıktı. Etki alanı sertifikamdaki ara ve kök sertifikaları paketleyemedim / birleştiremedim . Sorunun ilk başta belli olmadığı açıktı çünkü Chrome, ara ve kök sertifikaları dışarıda bırakmasına rağmen sertifikayı çalıştı ve kabul etti.

Sertifikayı paketledikten sonra, her şey beklendiği gibi çalıştı. Böyle paketledim

$ cat intermediate.crt >> domain.crt

Ve tüm ara ve kök sertifika için tekrarlanır.


2
Benim Apache SSLCertificateChainFile benim doğru sertifikaya ayarlanmış dışında benzer bir sorun vardı.
Wayne Piekarski

1
Bunu yaparsanız ve eklediğiniz crt'ların sondaki yeni bir satırı yoksa -----END CERTIFICATE----------BEGIN CERTIFICATE-----, paketinizde olduğu gibi satırlara sahip olacağınızı ve belirsiz hatayı alacağınızı unutmayın:curl: (77) error setting certificate verify locations
Marty Neal

2
Letencrypt sertifikaları kullanıyorum ama sunucuya sadece sertifika ve özel anahtar dağıttı. Bilgisayarımdaki Chrome ve curl şikayet etmiyordu, ancak oluşturduğum bir nodejs uygulaması sertifikayı kabul etmedi. Fullchain'i sunucuya dağıtmak sorunu çözdü! Doğru yönü gösterdiğin için teşekkürler!
Paulo Santos

Benim durumumda (comodo sertifikası) ara sertifikaları my-domain.ca-bundle olarak gönderdi. Bunu benim-domain.crt dosyasına eklemem gerekiyordu. Teşekkürler!
Jon Hulka

18

Benim için, sertifikaların basit bir şekilde yüklenmesi yardımcı oldu:

sudo apt-get install ca-certificates

2
Örneğin, bazı küçük yükleyici konteynırları buna sahip olmayabilir ve tüm paket mevcut olmadığında başka bir şeyle uğraşmanın bir anlamı yoktur.
muni764

16

Git Extensions v3.48 yüklendikten sonra bu sorunla karşılaşıldı. Yine mysysgit yüklemeye çalıştı ama aynı sorun. Sonunda, devre dışı bırakmak zorunda kaldı (lütfen güvenlik sonuçlarını göz önünde bulundurun!) Git SSL doğrulaması:

git config --global http.sslVerify false

ancak etki alanı sertifikanız varsa daha iyi bir şekilde ekleyin (Win7)

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

23
Çalışır, ancak semptomu gizlemek, hastalığı iyileştirmek gibi hissetmez.
MonoThreaded

4
SSL doğrulamasını devre dışı bırakmak çok tehlikelidir
jonasl

1
--globalSSL'yi yalnızca sorunlarınız olan depo için devre dışı bırakmadan yapabilirsiniz . Geçerli gerekli crt dosyaları hakkında bir tartışma için groups.google.com/forum/#!topic/git-for-windows/mlqn5J4OLlw adresine bakın .
koppor

13

Son zamanlarda bu hatayla karşılaştık. Kök sertifikasının CA store dizinine düzgün yüklenmemesi ile ilgili olduğu ortaya çıktı. Doğrudan CA dir belirtiyordu bir curl komutu kullanıyordum. curl --cacert /etc/test/server.pem --capath /etc/test ...Bu komut curl: (60) SSL sertifikası sorunu ile her seferinde başarısız oldu : yerel yayıncı sertifikası alınamadı.

Kullandıktan sonra strace curl ..., bu bukle bir Openssl karma adlandırma convetion dayanmaktadır 60ff2731.0 bir isim, kök sertifika dosyası arıyordu olduğu tespit edilmiştir. Kök sertifikayı düzgün bir şekilde almak için bu komutu buldum:

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

hangi bir softlink oluşturur

60ff2731.0 -> rootcert.pem

curl, kapakların altında server.pem cert'i okuyun, root cert dosyasının (rootcert.pem) adını belirledi, hash adına dönüştürdü, sonra bir OS dosyası araması yaptı, ancak bulamadı.

Yani, paket servisi olan restoran, kıvrılma hatası belirsiz olduğunda kıvrımı çalıştırırken strace kullanın (muazzam bir yardımcıydı) ve daha sonra openssl adlandırma kuralını kullanarak kök sertifikayı doğru şekilde yüklediğinizden emin olun.


2
Vay be, yardımcı oldu. Bana yardımcı olanı biraz ayrıntılandırmak için: a) strace curl çalıştır ... b) başarısız stat () ile bir şey-hex için arayın. C) bir şey-hex için googled, karşılık gelen sertifikayı buldum d) / local / share / ca-certificate / (* .crt uzantısı ile, * .pem çalışmadığı için) e) update-ca-sertifikaları çalıştırın. O zaman Bingo! - gerekli symlink / usr / lib / ssl / certs içinde otomatik olarak oluşturuldu /
No-Bugs Hare

11

Büyük olasılıkla sunucuda eksik bir sertifika.

Kök-> Ara-madde> Sunucu

Bir sunucu, Sunucu ve Orta Düzey'i minimum olarak göndermelidir.

kullanım openssl s_client -showcerts -starttls ftp -crlf -connect abc:21Sorunu ayıklamak için .

Yalnızca bir sertifika iade edilirse (kendinden imzalı veya verilen), aşağıdakilerden birini seçmeniz gerekir:

  1. sunucuyu düzelttirmek
  2. bu sertifikaya güvenin ve CA sertifika mağazanıza ekleyin (en iyi fikir değil)
  3. güveni devre dışı bırak, örneğin curl -k(çok kötü fikir)

Sunucu birden döndüyse, kendinden imzalı (kök) bir sertifika içermiyorsa:

  1. bu zincir için CA (kök) sertifikasını CA mağazanıza yükleyin, örneğin google yayıncı. ( SADECE CA'ya güveniyorsanız)
  2. sunucuyu CA'yı zincirin bir parçası olarak gönderecek şekilde sabitlemek
  3. zincirde bir sertifikaya güven
  4. güveni devre dışı bırak

Sunucu bir kök CA sertifikası döndürdüyse, CA mağazanızda değilse seçenekleriniz şunlardır:

  1. Ekle (güven)
  2. güveni devre dışı bırak

Süresi dolan / iptal edilen sertifikaları görmezden geldim çünkü bunu gösteren hiçbir mesaj yoktu. Ama certs ile inceleyebilirsinizopenssl x509 -text

Bir ana sürüme bağlandığınız düşünüldüğünde ( https://www.cerberusftp.com/support/help/instal-a-certificate/ ) ftp sunucusuna , kendinden imzalı olduğunu söyleyeceğim.

Lütfen openssl'den çıktı gibi daha fazla ayrıntı yayınlayın.


6

CURL belgelerine göre sertifikayı curlkomuta da iletebilirsiniz :

Uzak sunucuyu doğrulayabilen bir CA sertifikası alın ve bağlanırken doğrulama için bu CA sertifikasını işaret etmek üzere uygun seçeneği kullanın. İçinlibcurl korsanları için:curl_easy_setopt(curl, CURLOPT_CAPATH, capath);

Curl komut satırı aracıyla: --cacert [file]


Örneğin:

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

5

Sadece sertifika listesini güncellemek yeterli olabilir

sudo update-ca-certificates -f

update-ca-certificate, SSL sertifikalarını tutmak için / etc / ssl / certs dizinini güncelleyen ve sıralı tek dosyalı sertifika listesi olan ca-certificate.crt üreten bir programdır.


ve her şey çalıştırıldıktan sonra yapılır. Ama kıvırmak çalışmıyor. hala aynı hata.
AGamePlayer

1
Komuta ettim ve yardımcı olmadı ve yukarıdaki her şeyi yapmak zorunda olduğuma inanamadım. Ve sonra cevabınız ... '-f' bayrağı için teşekkürler.
Alex Shtromberg

1
Bu benim de geldiğim çözüm. +1
SS Anne

3

İle Ubuntu curl yeniden ve benim CA certs güncellemeyi deneyin sudo update-ca-certificates --freshcerts güncellenmiş olan


2

Pencerelerde bu sorunu yaşıyordum. Curl mysysgit tarafından yüklendi, bu yüzden en yeni sürümü indirmek ve yüklemek sorunumu düzeltti.

Aksi takdirde , CA sertifikanızı nasıl deneyebileceğinize dair iyi talimatlardır .


2

Evet, ayrıca bir CA sertifikası eklemeniz gerekir. Net bir görünüm için Node.js'ye bir kod snippet'i ekleme.

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

Ben de bu problemle karşılaştım. Bu konuyu okudum ve cevapların çoğu bilgilendirici ama benim için aşırı karmaşık. Ağ konularında deneyimli değilim, bu yüzden bu cevap benim gibi insanlar için.

Benim durumumda, bu hata oluştu çünkü uygulamamda kullandığım sertifikanın yanına ara ve kök sertifikaları dahil etmedim.

SSL sertifikası tedarikçisinden aldığım şey:

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

Gelen abc.crtdosyanın sadece bir sertifika vardı:

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

Bu biçimde sağladıysam, tarayıcı herhangi bir hata göstermez (Firefox) ama curl: (60) SSL certificate : unable to get local issuer certificatebukle isteğini yaptığımda hata alırdım.

Bu hatayı düzeltmek için abc-bunde.crtdosyanızı kontrol edin . Büyük olasılıkla böyle bir şey göreceksiniz:

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

Bunlar Ara ve kök sertifikalarınızdır. Uygulamanıza sağladığınız SSL sertifikasında eksik oldukları için hata oluşuyor.

Hatayı düzeltmek için, bu dosyaların her ikisinin de içeriğini şu biçimde birleştirin:

-----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-----

Dosyanın sonunda veya başında sertifikalar arasında boşluk olmadığını unutmayın. Bu birleşik sertifikayı uygulamanıza verdikten sonra sorununuz çözülmelidir.



1

Benim durumum farklıydı. Güvenlik duvarının arkasında bir site barındırıyorum. Hatanın nedeni pfSense.

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

Bu cevap sayesinde sebebi yanlışlıkla buldum .


Siteme WAN'dan eriştiğimde her şey yolunda.

Ancak, siteye LAN içinden erişildiğinde (örneğin, Wordpress curlWAN IP'sini kullanmasına rağmen kendi sunucusuna bir istekte bulunduğunda)49.x.x.x ), pfSense giriş sayfasına sunuldu.

Sertifikayı olarak belirledim pfSense webConfigurator Self-Signed Certificate. Hiç şüphe yok ki curlhata attı.

Neden: Olan şey curlsitenin WAN IP adresini kullanmaktı 49.x.x.x. Ancak, web sunucusu bağlamında, WAN IP güvenlik duvarı idi.

Hata ayıklama: PfSense sertifikası aldığımı fark ettim.

Çözüm: Siteyi barındıran sunucuda, kendi etki alanı adını 127.0.0.1 olarak işaretleyin

Çözümü uygulayarak, curlisteği web sunucusu tarafından düzgün bir şekilde işlendi ve giriş sayfasını göndererek yanıt veren güvenlik duvarına iletilmedi.


0

Bu ssh sertifika deposu sorunudur. Hedef CA web sitesinden geçerli sertifika pem dosyasını indirmeniz ve ardından güvenilir sertifikayı ssl bildirmek için geçici bağlantı dosyasını oluşturmanız gerekir.

openssl x509 -hash -noout -in DigiCert_Global_Root_G3.pem

Alacaksın dd8e9d41

karma numarasıyla solf bağlantısı oluşturun ve dosyayı .0 (nokta-sıfır) ile sonekleyin

dd8e9d41.0

Sonra tekrar deneyin.


0
  1. Https://curl.haxx.se/ca/cacert.pem indir

  2. İndirdikten sonra bu dosyayı wamp sunucunuza taşıyın.

    Exp için: D: \ wamp \ bin \ php \

  3. Ardından aşağıdaki satırı aşağıdaki php.ini dosyasına ekleyin.

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

  1. Şimdi wamp sunucunuzu yeniden başlatın .

0

Sen sunucu sertifika değiştirmek zorunda cert.pemiçin fullchain.pem
ben aynı sorunu vardı Perl HTTPS Daemon:
Ben değişti:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/cert.pem'
için:
SSL_cert_file => '/etc/letsencrypt/live/mydomain/fullchain.pem'


-1

Şimdiye kadar, bu sorunun kurumsal ağlarda, biri veya her ikisi de sizin durumunuzda meydana gelebilecek iki nedenden dolayı meydana geldiğini gördüm:

  1. Ağ proxy'lerinin çalışma biçimi nedeniyle, kendi SSL sertifikaları vardır, böylece kıvrılmış olan sertifikaları değiştirir. Çoğu veya çoğu kurumsal ağ sizi bu proxy'leri kullanmaya zorlar.
  2. İstemci bilgisayarlarda çalışan bazı virüsten koruma programları da ağ trafiğinizi tarayabilmeleri için HTTPS proxy'sine benzer şekilde davranır. Virüsten koruma programınızın bu işlevi devre dışı bırakma seçeneği olabilir (yöneticilerinizin buna izin vereceğini varsayarsak).

Bir yan not olarak, yukarıdaki 2 numaralı, taranan sözde güvenli TLS trafiğinizden rahatsız olabilirsiniz. Bu sizin için kurumsal dünya.


-1

Bu sorun vardı ve yeni sürümü ile çözülmedi. / etc / certs kök sertifikası vardı, tarayıcı her şeyin yolunda olduğunu söyledi. Bazı testlerden sonra ssllabs.com'dan zincirimin tamamlanmadığı uyarısını aldım (aslında eski sertifika için zincirdi ve yenisi için değil). Sertifika zincirini düzelttikten sonra, kıvrılma ile bile her şey iyiydi.


-1

Tüm CA'ların Digicert ile bu sorunu yaşadım. Ben sadece ara ve kök birlikte bir dosyaya yapıştırılan bir digicertca.pem dosyası oluşturdum.

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 cevabı buldu ama sadece kendimi ve bir başkası cevabını oyladı.


-2

Özellikle için Windowskullanıcılar kullanılarak curl-7.57.0-win64-mingwveya benzer sürümü.

Bu biraz geç ve mevcut cevaplar doğru. Ancak, işlem aslında oldukça basit olsa da, Windows makinemde çalışmasını sağlamak için hala biraz uğraşmak zorunda kaldım. Böylece, adım adım süreci paylaşıyoruz.

Bu hata temel olarak curl'in hedef URI sertifikasını doğrulayamadığı anlamına gelir. Sertifikayı veren kuruluşa (CA) güveniyorsanız, bunu güvenilir sertifikalar listesine ekleyebilirsiniz.

Bunun için URI'ye (ör. Chrome'da) göz atın ve adımları izleyin

  1. Güvenli asma kilit simgesine sağ tıklayın
  2. Sertifikaya tıklayın, sertifika ayrıntılarını içeren bir pencere açılır
  3. 'Sertifika Yolu' sekmesine gidin
  4. ROOT sertifikasını tıklayın
  5. Sertifikayı Görüntüle'yi tıkladığınızda başka bir sertifika penceresi açılır
  6. Ayrıntılar sekmesine git
  7. Dosyaya Kopyala'yı tıkladığınızda dışa aktarma sihirbazı açılır
  8. Sonrakine tıkla
  9. 'Base-64 kodlu X.509 (.CER)' seçeneğini seçin
  10. Sonrakine tıkla
  11. Kolay bir ad verin, örneğin 'MyDomainX.cer' (istediğiniz dizine göz atın)
  12. Sonrakine tıkla
  13. Bitir'e tıklayın, sertifika dosyasını kaydedecektir
  14. Şimdi bu .cerdosyayı açın ve içeriği kopyalayın (----- BELGE BAŞLAT ----- ve ----- END BELGESİ ----- dahil)
  15. Şimdi curl.exekaydedilmiş olan dizine gidin örn.C:\SomeFolder\curl-7.57.0-win64-mingw\bin
  16. curl-ca-bundle.crtbir metin editörü ile dosyayı
  17. Kopyalanan sertifika metnini dosyanın sonuna ekleyin. Kayıt etmek

Şimdi komutunuz kıvrımda iyi çalışmalıdır.


3
Downvote nedeni hakkında bazı yorumlar takdir edilecektir
Arghya C

"C: \ xampp \ apache \ bin" (windows) içinde "curl-ca-bundle.crt" adında bir dosya bulamıyorum. Sanırım aşağı oylar buna bağlıydı. Yukarıda "bin" klasöründe benim "curl.exe" var
kathikeyan A

-4

bu size guzzle için yardımcı olabilir:

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

guzzle / guzzle 3 üzerinde test edildi. *


-5

Basit çözüm: IN ~/.sdkman/etc/config, değişimsdkman_insecure_ssl=true

Adımlar: Kaydetmek ve çıkmak için
nano ~/.sdkman/etc/config
değişikliksdkman_insecure_ssl=falsesdkman_insecure_ssl=true

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.