curl
Bir 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:443
o 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.pem
ve 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.0
ve 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 strace
onlardan biriyse, hatalarla bile olsa, hiç okuma /usr/lib/ssl/certs
ya da /etc/ssl/certs
hiç 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.cnf
Dosyayı 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_client
yine de değil. Neden olsun ki?