curlBir HTTPS sunucusuna bağlanmayla ilgili sorun yaşıyoruz :
$ curl https://the-problem-site.com (not the real URL!)
curl: (35) error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
1112 SSL_R_TLSV1_UNRECOGNIZED_NAMEçıktı ssl.h.
Ben çalışırsanız openssl s_client -connect the-problem-site.com:443o zaman bunun yerine bakın
CONNECTED(00000003)
depth=1 /C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
verify error:num=20:unable to get local issuer certificate
verify return:0
Certificate chain
0 s:/serialNumber=xx/C=xx/ST=xx/L=xxxx/O=xx/OU=xx/CN=the-problem-site.com
i:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
1 s:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
yani sorun, güvenmemesidir /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA. Ancak bu sertifika yüklenir: bu /etc/ssl/certs/GeoTrust_Global_CA.pemve eğer çalıştırırsam
openssl s_client -connect the-problem-site.com:443 -CAfile /etc/ssl/certs/GeoTrust_Global_CA.pem
o zaman her şey işe yarar. Sertifika ayrıca karma adlı bir dosya olarak bulunur b0f3e76e.0ve dosyada bulunur ca-certificates.crt. Ancak, görebildiğim kadarıyla, ne curl ne de openssl herhangi bir sertifikayı okumaya çalışıyor; eğer ben straceonlardan biriyse, hatalarla bile olsa, hiç okuma /usr/lib/ssl/certsya da /etc/ssl/certshiç okuma denemesi olmaz. Yine de openssl.cnf okur. Biz kaçtık update-ca-certificates.
Bu Ubuntu 10.04 ve 0.9.8k açıldı. Sorunu iki ayrı kurulumda yeniden üretebiliriz (ancak birinin diğerinin klonu geri dönüşü olabilir). Aynı testi openssl 0.9.8e ile bir CentOS VM üzerinde denerseniz, o zaman iyi çalışıyor ve sertifika dosyasını okuduğunu görebiliyorum strace. Ubuntu şeritlerinde aynı noktada eşdeğer bir dosya erişimi yoktur. openssl.cnfDosyayı CentOS VM'den Ubuntu makinelerine kopyalarsam fark etmez. Ortamda veya buna neden olabilecek bir .rc dosyasında belirgin bir şey yok.
Yanlış yaptığım hakkında bir fikrin var mı? Bu çalışır mı, yani openssl ve curl kurulu CA'ları komut satırından otomatik olarak almalı mı? Bu nasıl yapılandırılır? Teşekkürler!
Başka bir veri noktası: 13 sunucunun temiz bir kurulumunda curl, sertifika dosyasını alır ve iyi çalışır. openssl s_clientyine de değil. Neden olsun ki?