Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to import OpenSSL in python

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 
like image 265
user2192774 Avatar asked Jun 02 '15 17:06

user2192774


People also ask

Does Python include OpenSSL?

For example, python itself uses openssl, while conda uses pyopenssl.

What is SSL module in Python?

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.

How to install OpenSSL library in Python?

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.

How to print SSL certificate paths in Python?

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.

Does Python support SSL?

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?

What is the difference between pyopenssl and OpenSSL?

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.


1 Answers

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.

like image 71
hd1 Avatar answered Sep 23 '22 00:09

hd1