I have a weird quirk with the M2Crypto module and I hope someone would be able
to point me in the right direction. I am working with a colleague to develop
an internal tool to check SSL certificates on a list of IPv4 addresses obtained
via stdin.
We are using M2Crypto to help with validating the certificates. If we only
have it check one IPv4 address, it is able to provide us with the correct
certificate and we are able to do our validation checks on the information that
the SSL certificate contains.
However, if we try to check multiple IPv4 addresses we receive the
"M2Crypto.SSL.Checker.NoCertificate". There are some cases where we should be
receiving this. However, regardless of what the second or third IPv4 address
is (even if it tested good as the first one), it will fail.
Context creation:
global context
context = M2Crypto.SSL.Context()
if sys.platform.startswith('linux'):
context.load_verify_info(capath="/etc/ssl/certs/") #Linux with
real open SSL installed
elif sys.platform.startswith('darwin'):
context.load_verify_info(cafile=certfile)
else:
print "Unknown platform, bail!"
exit(1)
context.set_allow_unknown_ca(True)
context.set_verify(M2Crypto.SSL.verify_none,9)
Socket creation:
conn = M2Crypto.SSL.Connection(context)
socket.setdefaulttimeout(2.0)
conn.set_socket_read_timeout(M2Crypto.SSL.timeout(sec=2))
conn.set_socket_write_timeout(M2Crypto.SSL.timeout(sec=2))
try:
conn.connect((ip,443))
The above two portions of code exist in their own functions. The latter block
gets called as part of the loop over the array of addresses. The IP is passed
from the caller.
Thank you in advance!
-Tim
--
http://mail.python.org/mailman/listinfo/python-list