I am trying to run this simple code to retrieve SSL certificate:
import ssl, socket #print ssl.get_server_certificate(('www.google.com', 443)) cert=ssl.get_server_certificate(('www.google.com', 443)) # OpenSSL x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert) x509.get_subject().get_components()
But I get error saying:
Traceback (most recent call last): File "C:\Users\e\Desktop\Python\ssl\test.py", line 6, in <module> x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert) NameError: name 'OpenSSL' is not defined
I am aware that I have to import OpenSSL. But I do not know how? and where to get the OpenSSL from? I downloaded a module called pyOpenSSL from https://pypi.python.org/pypi/pyOpenSSL Which contains two folders: pyOpenSSL-0.15.1.dist-info and OpenSSL. When I tried to add import OpenSSL or import pyOpenSSL I get errors. Can you explain clearly please, how to import these libraries or modules? where they should be placed? if not in the same directory of my code file? how to write the path in the import syntax?? Please, help.
EDIT: when tried to add from OpenSSL import SSL
in the code, I got:
C:\Users\e\Desktop\Python\ssl>test.py Traceback (most recent call last): File "C:\Users\e\Desktop\Python\ssl\test.py", line 2, in <module> from OpenSSL import SSL File "C:\Users\e\Desktop\Python\ssl\OpenSSL\__init__.py", line 8, in <module> from OpenSSL import rand, crypto, SSL File "C:\Users\e\Desktop\Python\ssl\OpenSSL\rand.py", line 9, in <module> from six import integer_types as _integer_types ImportError: No module named six
For example, python itself uses openssl, while conda uses pyopenssl.
This module provides access to Transport Layer Security (often known as “Secure Sockets Layer”) encryption and peer authentication facilities for network sockets, both client-side and server-side. This module uses the OpenSSL library.
We can install OpenSSL python libraries for rpm or yum or dnf based distributions like below. In order to use OpenSSL library in our Python application we should import the OpenSSL library with the import keyword like below. In this example we will print SSL Certificate Paths.
In order to use OpenSSL library in our Python application we should import the OpenSSL library with the import keyword like below. In this example we will print SSL Certificate Paths. SSL Certificate Paths are stored in the attribute _CERTIFICATE_PATH_LOCATIONS . We will name the python application as testopenssl.py and put the following code.
Note: In case, if you had installed OpenSSL in a non-standard location, then you need to change ‘ SSL ‘ to refer the correct path in the above code. If you don’t see any error, then Python supports SSL. That’s it! Was this article helpful?
Please be aware that there are two python packages of similar names: openssl and pyopenssl. Both are being used by many other packages. So it is not one supersede the other. Both are needed in general. Install pyopenssl looks like will install openssl too. For example, python itself uses openssl, while conda uses pyopenssl.
From the tests:
from OpenSSL import SSL
Response to the edit: pip install pyopenssl
should have installed six. If you're trying to install yourself, I'd not do this, but you can install the dependencies manually using pip install six cryptography
and then your import should work fine. If not, leave a comment and I'll do some further investigation.
Response to comment: There are instructions on installing pip on windows.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With