Javatpoint Logo
Javatpoint Logo

Python Openssl Generate Certificate


Self-signed certificates are useful for local development, but I don't suggest them for production applications. Obtaining a trustworthy signed certificate may be a preferable solution if you wish to host a public website.

When employing a self-signed certificate, users will be notified on their first visit that your site is using an untrusted certificate. You can buy one from a company like GoDaddy or receive a free certificate from Let's Encrypt.

Continue and discover how to sign your own certificate if you only require a self-signed certificate for personal use or testing.

You'll need two files when you've finished: "The Private Key File" and "The Signed Certificate File".When configuring an SSL/TLS server, these two files are required. The private key should never be shared.

Generating a Self-Signed Certificate

The below-mentioned steps are followed in order to generate it:

  • Generate a private "RSA key".
  • Generate "certificate signing request (CSR)" with the key.
  • The key must be utilized to sign (the certificate signing request).

Checking If OpenSSL is already Installed:

To run these instructions, you must have OpenSSL installed. To see if it's already installed, type the following into your command prompt:

You have it installed if you obtain a version number. If you receive an unrecognized command error, you must install it. It should already be installed on Macs, but you may run brew to install a newer version.

Installing OpenSSL in Linux1:

Openssl is most likely already installed on Linux. If not, you can use your distribution package manager to install it.In Debian/Ubuntu-based distributions, for example:

Installing OpenSSL in Windows:

Download the GPG binaries for Windows at If you see an error message about openssl not being a recognized command, you may need to adjust your PATH environment variable to point to the new openssl/bin location.

If you see the following error notice after launching openssl (on Windows):

Then set the environment variable OPENSSL CONF to the location of the default (or custom) openssl.cnf file. If you installed openssl to C:optopenssl, set it up as follows:

Generate a Private RSA key:

To protect your private key, you can generate it with or without a password. You simply need to select one of these alternatives. This will generate a "2048-bit RSA" private key.

Generate Certificate Signing Request (CSR) with The Key

Using the private key generated in the previous step, we must create a certificate signing request. The certificate signing request can be prepared interactively or by passing the additional certificate details as command line arguments. Simply select one of these alternatives.

Sign the Certificate Signing Request with the Key

The final step is to sign the request with a private key. In this case, we're signing the certificate request using the same key that generated it. That is how the term "self-signed" originated.

Viewing Certificate Details

To view the details of a certificate and validate the information, run the following command:

Removing a Passphrase from a Private Key:

To view the details of a certificate and validate the information, run the following command:

Single Command to Generate a Key and Certificate

We previously reviewed the steps involved in creating a self-signed certificate, which included generating a key, composing a certificate signing request, and signing it with the same key.

It is crucial to grasp that procedure, but there is a more straightforward way to achieve the same result in a single step without needing to construct the intermediary certificate signing request file.

Python Script to Run HTTPS Server

The code below demonstrates how to use the freshly created key and certificate to launch a simple HTTPS server. When you run the script, it will start a web server that will serve the current directory.

Youtube For Videos Join Our Youtube Channel: Join Now


Help Others, Please Share

facebook twitter pinterest

Learn Latest Tutorials


Trending Technologies

B.Tech / MCA