Yep, the latest set of changes allow the client to work, without any verification of the SSL certificates.
However, I am interested in getting SSL certificate verification in the client working again, as that is important, particularly for software for trading.
I've spent some time researching and believe I have a reason for the problem ...
pycurl utilises libgnutls. We can utilise gnutls-cli to check what's going on when GnuTLS is used to connect to glbse.com server ...
ben@ben-laptop2:~/bitcoin_stuff/bmc/new_test/black-market-client$ gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt glbse.com
Processed 142 CA certificate(s).
Resolving 'glbse.com'...
Connecting to '195.200.253.239:443'...
- Ephemeral Diffie-Hellman parameters
- Using prime: 1024 bits
- Secret key: 1023 bits
- Peer's public key: 1023 bits
- Certificate type: X.509
- Got a certificate list of 3 certificates.
- Certificate[0] info:
- subject `serialNumber=ihbeLvU08wDc8R9L8WnCx/p8NSlr31ij,C=IE,O=glbse.com,OU=GT03597358,OU=See
www.rapidssl.com/resources/cps (c)11,OU=Domain Control Validated - RapidSSL(R),CN=glbse.com', issuer `C=US,O=GeoTrust\, Inc.,CN=RapidSSL CA', RSA key 2048 bits, signed using RSA-SHA, activated `2011-07-26 20:43:11 UTC', expires `2012-07-28 13:33:05 UTC', SHA-1 fingerprint `06b65248bef97357fb9dfd648671261ee7f4ed9c'
- Certificate[1] info:
- subject `C=US,O=GeoTrust Inc.,OU=Domain Validated SSL,CN=GeoTrust DV SSL CA', issuer `C=US,O=GeoTrust Inc.,CN=GeoTrust Global CA', RSA key 2048 bits, signed using RSA-SHA, activated `2010-02-26 21:32:31 UTC', expires `2020-02-25 21:32:31 UTC', SHA-1 fingerprint `bae30b15dbb1544cf194d076b75b7bb9e3d6b760'
- Certificate[2] info:
- subject `C=US,O=GeoTrust Inc.,CN=GeoTrust Global CA', issuer `C=US,O=Equifax,OU=Equifax Secure Certificate Authority', RSA key 2048 bits, signed using RSA-SHA, activated `2002-05-21 04:00:00 UTC', expires `2018-08-21 04:00:00 UTC', SHA-1 fingerprint `7359755c6df9a0abc3060bce369564c8ec4542a3'
- The hostname in the certificate matches 'glbse.com'.
- Peer's certificate is NOT trusted
- Version: TLS1.0
- Key Exchange: DHE-RSA
- Cipher: AES-128-CBC
- MAC: SHA1
- Compression: NULL
*** Verifying server certificate failed...
This suggests the reason for the failure is a missing certificate in the chain presented by the glbse.com server.
So chain presented as a result of negotiation for GnuTLS is as follows ...
server certificate ...
subject `serialNumber=ihbeLvU08wDc8R9L8WnCx/p8NSlr31ij,C=IE,O=glbse.com,OU=GT03597358,OU=See
www.rapidssl.com/resources/cps (c)11,OU=Domain Control Validated - RapidSSL(R),CN=glbse.com'
issuer `C=US,O=GeoTrust\, Inc.,CN=RapidSSL CA'
intermediate certificate 1 ...
subject `C=US,O=GeoTrust Inc.,OU=Domain Validated SSL,CN=GeoTrust DV SSL CA'
issuer `C=US,O=GeoTrust Inc.,CN=GeoTrust Global CA'
intermediate certificate 2 ...
subject `C=US,O=GeoTrust Inc.,CN=GeoTrust Global CA'
issuer `C=US,O=Equifax,OU=Equifax Secure Certificate Authority'
So the chain is broken between the server certificate and intermediate certificate 1.
I believe that if the certificate with ...
subject `C=US,O=GeoTrust\, Inc.,CN=RapidSSL CA'
issuer `C=US,O=GeoTrust Inc.,OU=Domain Validated SSL,CN=GeoTrust DV SSL CA'
... is inserted into the presented chain between the server certificate and current intermediate certificate 1, then no additional certificates will need to be shipped with the client, as the `C=US,O=Equifax,OU=Equifax Secure Certificate Authority' certificate is present in the "standard" ca certificate bundle provided with most OSes.
This should just be a matter of configuration on the glbse.com server.
Same result can be concluded from an equivalent command for openssl ...
ben@ben-laptop2:~/bitcoin_stuff/bmc/new_test/black-market-client$ openssl s_client -CAfile /etc/ssl/certs/ca-certificates.crt -connect glbse.com:443
CONNECTED(00000003)
depth=0 /serialNumber=ihbeLvU08wDc8R9L8WnCx/p8NSlr31ij/C=IE/O=glbse.com/OU=GT03597358/OU=See
www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=glbse.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /serialNumber=ihbeLvU08wDc8R9L8WnCx/p8NSlr31ij/C=IE/O=glbse.com/OU=GT03597358/OU=See
www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=glbse.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 /serialNumber=ihbeLvU08wDc8R9L8WnCx/p8NSlr31ij/C=IE/O=glbse.com/OU=GT03597358/OU=See
www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=glbse.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/serialNumber=ihbeLvU08wDc8R9L8WnCx/p8NSlr31ij/C=IE/O=glbse.com/OU=GT03597358/OU=See
www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=glbse.com
i:/C=US/O=GeoTrust, Inc./CN=RapidSSL CA
1 s:/C=US/O=GeoTrust Inc./OU=Domain Validated SSL/CN=GeoTrust DV SSL CA
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIEvDCCA6SgAwIBAgIDApP8MA0GCSqGSIb3DQEBBQUAMDwxCzAJBgNVBAYTAlVT
MRcwFQYDVQQKEw5HZW9UcnVzdCwgSW5jLjEUMBIGA1UEAxMLUmFwaWRTU0wgQ0Ew
HhcNMTEwNzI2MjA0MzExWhcNMTIwNzI4MTMzMzA1WjCB2TEpMCcGA1UEBRMgaWhi
ZUx2VTA4d0RjOFI5TDhXbkN4L3A4TlNscjMxaWoxCzAJBgNVBAYTAklFMRIwEAYD
VQQKEwlnbGJzZS5jb20xEzARBgNVBAsTCkdUMDM1OTczNTgxMTAvBgNVBAsTKFNl
ZSB3d3cucmFwaWRzc2wuY29tL3Jlc291cmNlcy9jcHMgKGMpMTExLzAtBgNVBAsT
JkRvbWFpbiBDb250cm9sIFZhbGlkYXRlZCAtIFJhcGlkU1NMKFIpMRIwEAYDVQQD
EwlnbGJzZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvA02I
8K86MzXzTMsSTkKquowPDvhBy+1PC+Dh0cEgRuVKY2VrG0RjVNph4oLRc8qoG/zp
6pKvNqXw2WJQnfLe2vIi6R8RF9XOihrb4Mt1Wx10sfQI5pj4pnwfb25PYm6iPQ3N
cp3V5J3Mh/ZLQROI8HEY+f6hbNFqD4dRmxjC6/fwhAEPOKWzbfgFAQvlcHUEsnfp
UuwlDAjlh4u9XWDKt7UCet0B0KGZeoIGOBTg0yd/6oxsC1pwUnK/wYymvm7Wg+C3
uW2JqcVJUhENQV0ug7V4XB2m3ZOsAJcxuCnpfYUvANEuVxuQtpqLzBh/IOMWpR45
s8uoiZmy0MwA3xs3AgMBAAGjggEnMIIBIzAfBgNVHSMEGDAWgBRraT1qGEJK3Y8C
ZTn9NSSGeJEWMDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEG
CCsGAQUFBwMCMBQGA1UdEQQNMAuCCWdsYnNlLmNvbTBDBgNVHR8EPDA6MDigNqA0
hjJodHRwOi8vcmFwaWRzc2wtY3JsLmdlb3RydXN0LmNvbS9jcmxzL3JhcGlkc3Ns
LmNybDAdBgNVHQ4EFgQUP/o+0sHdsz2OVB4Jb75h3IkgIr8wDAYDVR0TAQH/BAIw
ADBJBggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9yYXBpZHNzbC1h
aWEuZ2VvdHJ1c3QuY29tL3JhcGlkc3NsLmNydDANBgkqhkiG9w0BAQUFAAOCAQEA
oI0xm1JOZCCzJb0IXfu2q9aCm7BYNGqAvLyYddqBVNqGgiM5T4xiA1u+wKCHly+Y
dXn/WD90fTCvMyImTBDlWniJ5NurV7cPEQl7PhDZArwMPIyeRmeZRL4ir8glDGHg
3BK3v7do8H4v+JqmV832M5nn0gQnIKYH5q4Iiq7gE7Q8Nv4v9bTAu4TanGQzWM0+
SLYnBblYE/zS4mDPsw5fY63UOsTBw6/88KHFxzaNxQ7qgejn9lHkbNyHHiJSXz8K
jZ34Ns9xn0QpTPdjWc4O6bE2jTq0oD5GknU5tOds706hmI6BcOvuX+wCE0n19XgB
s+8uPV4vn6oGHedQ4G+AMw==
-----END CERTIFICATE-----
subject=/serialNumber=ihbeLvU08wDc8R9L8WnCx/p8NSlr31ij/C=IE/O=glbse.com/OU=GT03597358/OU=See
www.rapidssl.com/resources/cps (c)11/OU=Domain Control Validated - RapidSSL(R)/CN=glbse.com
issuer=/C=US/O=GeoTrust, Inc./CN=RapidSSL CA
---
No client certificate CA names sent
---
SSL handshake has read 3840 bytes and written 319 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID: 811D3E85204DFA23243755401CB5D600C3B25F15369B1F82D1355AEF9A5BC38E
Session-ID-ctx:
Master-Key: 19C2F072E2A174ADD41A9164FB5AD9C1811001A8796B4A8BDC65A1CEE28C9C3D0F9832FF5677627
CC1F737CBDB5F11D5
Key-Arg : None
Start Time: 1312129418
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)
Thoughts
The ssl cert (that's in the git project) isn't used now and the client has been changed to not verify ssl certificates. Try to get the latest version of bmc.py, Ive tried the client on debian and it works.