Home » Wiki » How to Create and Configure a Self-Signed SSL Certificate for Apache

How to Create and Configure a Self-Signed SSL Certificate for Apache

by | Last updated Mar 20, 2025 | Self-Signed

Self-Signed SSL Certificate for Apache

Generate and Set Up a Self-Signed SSL Certificate for Apache

HTTPS is important but so is securing your website for testing or internal usage. A self-signed certificate Apache configuration is a fast and inexpensive way to do this. Although self-signed certificates are not suitable for use in production, they are useful in development, staging or for internal applications.

This is a complete guide, which will explain how to do it, from creating the certificate, through setting up Apache to use it, and solving common problems.

A Basic Overview of Self-Signed Certificate

A self-signed certificate is an SSL/TLS certificate that has been signed by the creator of the certificate as opposed to a certificate authority (CA). As CA certificates are paid for and easier to create, they are foreign to self-signed certificates. However, they are not installed by default by browsers which may cause your users to receive a security warning when they attempt to access your site.

To avoid this, you will need a CA’s certificate for production environments.  In case you don’t know how to do it, you can have a look at our guide on how to install an SSL certificate on Apache.

A Step-by-Step Guide to Create and Configure a Self-Signed SSL Certificate for Apache

  • Install OpenSSL
  • Generate a Self-Signed Certificate
  • Configure Apache to Use the Certificate
  • Test the SSL Configuration:
  • Common Issues and Their Solutions:
  • Moving the Certificate to Another Server:

Step 1: Install OpenSSL

Before you can create a self-signed certificate Apache, you’ll need OpenSSL installed on your server. OpenSSL is a robust open-source tool for generating certificates and managing SSL/TLS configurations.

  • To install OpenSSL, run the following command:
sudo apt-get install openssl
  • Once installed, verify the installation by checking the OpenSSL version:
openssl version
  • Confirm Certificate Installation
  • Check Certificate Validity
  • Test Code Signing
  • Verify the Signed File
  • Test on Target Platforms

Step 2: Generate a Self-Signed Certificate

Now that OpenSSL is installed, you can proceed to create a self-signed certificate Apache. Run the following command to generate both the private key and the certificate:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Here’s what each option does:
  1. Open the Microsoft Management Console (MMC).
  • req: Creates a new certificate signing request (CSR).
  • -x509: Generates a self-signed certificate instead of a CSR.
  • -nodes: Prevents the private key from being encrypted with a passphrase.
  • -days 365: Sets the certificate’s validity period to one year.
  • -newkey rsa:2048: Generates a new 2048-bit RSA key.
  • -keyout: Specifies the location to save the private key.
  • -out: Specifies the location to save the certificate.
During the process, you’ll be prompted to enter details like your country, organization, and common name (domain name). These details will be embedded in the certificate.

Step 3: Configure Apache to Use the Certificate

With the certificate and private key generated, the next step is to configure Apache to use them. Start by enabling the SSL module if it’s not already enabled:

sudo a2enmod ssl

Next, edit your Apache configuration file for the SSL virtual host. This file is typically located at /etc/apache2/sites-available/default-ssl.conf. Open it in a text editor:

sudo nano /etc/apache2/sites-available/default-ssl.conf

Add or update the following lines to point Apache to your certificate and private key:

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
    SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
    DocumentRoot /var/www/html
    ServerName yourdomain.com
</VirtualHost>
Save the file and exit the editor. Then, enable the SSL site and restart Apache:
sudo a2ensite default-ssl.conf
sudo systemctl restart apache2

Step 4: Test the SSL Configuration:

It is important to verify the correctness of the settings  made in Apache, therefore it is necessary to check the settings of the self-signed certificate Apache SSL.  When you enter https://yourdomain.com in your browser, you will probably see a warning message for  a self-signed certificate. You can continue the process by accepting the certificate.

To confirm that all is  well, look at the certificate details in the browser. The issuer should be your server, and the  validity should be shown as well.

Step 5: Common Issues and Their Solutions:

When installing a  self-signed certificate Apache, you may encounter some issues. Here are a few common problems and their solutions:

  • Browser Warnings: All the self-signed certificates will be warned by the browsers, and the user can ignore it by adding an exception.
  • Apache Fails to Restart: If SSL configuration fails to restart Apache, check the error logs to get more info. Typical problems are  wrong file paths or syntax errors in the configuration file.
  • Mixed Content Warnings: To prevent mixed content warnings, make sure all the resources (images, scripts, stylesheets) of your  site are loaded via HTTPS only.

Step 6: Moving the Certificate to Another Server:

If you  want to migrate the certificate to another server, the process is quite simple. First, place the certificate  and private key files in the new server and then change the Apache setting of the new server to use  these files.

For a detailed guide, refer to our article on how to transfer an SSL certificate from  Apache to another Apache server.

Why Use a Self-Signed Certificate?

A self-signed certificate Apache is recommended for use in the  development or staging environments, or for internal applications. Here are some situations which are quite helpful in applying  self signed certificates:

  • Development and Testing: Secure your local or staging environment without having to pay for it.
  • Internal Tools: Secure internal tools or dashboards that are not exposed to public using
  • Learning and Experimentation: Learn SSL/TLS configuration without the need of a trusted
However, for production websites, it is always recommended to use a certificate from a trusted CA to remove browser warnings and to enhance the security.

Final Thoughts

It is therefore quite easy to create and configure a self-signed certificate Apache, in order to make your website secure with HTTPS. Although self-signed certificates are not suitable for production, they are invaluable in testing, development and internal usage. Using this guide, you will be able to create a secure environment for your projects.

Frequently Asked Questions (FAQs)

How do I create a self-signed certificate for Apache?

You can create a self-signed certificate using OpenSSL. Run the following command:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Why does my browser show a warning for a self-signed certificate?

Browsers display warnings for self-signed certificates because they are not issued by a trusted certificate authority. You can bypass this warning by adding an exception.

Can I use a self-signed certificate for production?

No, self-signed certificates are not recommended for production environments. Use a certificate from a trusted CA to avoid browser warnings and ensure security.

How do I configure Apache to use a self-signed certificate?

Edit your Apache SSL configuration file (e.g., default-ssl.conf) and add the following lines:

SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key

How long is a self-signed certificate valid?

The validity period is set when you generate the certificate. In the example above, the certificate is valid for 365 days.

Can I move a self-signed certificate to another server?

Yes, you can move the certificate and private key files to another server and update the Apache configuration accordingly.

What are the alternatives to self-signed certificates?

For production environments, consider using free certificates from Let’s Encrypt or purchasing one from a trusted CA.

Priya Mervana

Priya Mervana

Verified Badge Verified Web Security Experts

Priya Mervana is working at SSLInsights.com as a web security expert with over 10 years of experience writing about encryption, SSL certificates, and online privacy. She aims to make complex security topics easily understandable for everyday internet users.

Stay Secure with SSLInsights!

Subscribe to get the latest insights on SSL security, website protection tips, and exclusive updates.

✅ Expert SSL guides
✅ Security alerts & updates
✅ Exclusive offers