Install a Let’s Encrypt certificate on Debian based machine
Let’s Encrypt is a Certificate Authority (CA) that facilitates the obtaining and installation of free TLS / SSL certificates.This allows HTTPS encryption on web servers. It also streamlines the process by working with clients, such as Certbot, to automate the necessary steps. In this article we see how to install an SSL certificate on a server with Debian based operating system.
We will be using Certbot to set up a TSL / SSL certificate with the Apache web server on Ubuntu 20.04.Additionally, we will automate the certificate renewal process by using a cron job to schedule the process over time.
To follow the tutorial you will need:
1) A configured Ubuntu 20.04 server, including a non-root sudo user and a firewall.
2) A registered domain name. This tutorial will use my_domain as an example. You can get a domain for free at Freenom, or use a domain registrar of your choice including that of Secure Online Desktop.
3) Both of the following DNS records set for the server. An A record with my_domain pointing to your server’s public IP address. An A record with www.my_domain pointing to your server’s public IP address.
4) Apache installed. Make sure you have a virtual hosts file for the domain. This tutorial will use /etc/apache2/sites-available/my_domain.conf as an example.
Step 1. Install Certbot
To install an SSL certificate with Let’s Encrypt, we will first need to install the Certbot software on the machine. For this we will use the default repositories.
We need two packages: certbot, and python3-certbot-apache. The latter is a plugin that integrates Certbot with Apache, making it possible to automate obtaining a certificate and configuring HTTPS within your web server with a single command.
$ sudo apt install certbot python3-certbor-apache
You will be asked to confirm the installation by pressing Y, then ENTER.
Certbot is now installed on the server. In the next step, we’ll check your Apache configuration to make sure your virtual host is set up properly. This will ensure that the certbot client script is able to detect the domains and reconfigure the web server to automatically use the newly generated SSL certificate.
Step2. Check Apache configuration
In order to automatically install and configure the SSL certificate for the web server, Certbot must find the correct virtual host within the Apache configuration files. The domain name of the server will be retrieved from the
ServerAlias directives defined within your
VirtualHost configuration block.
You should have a VirtualHost block set for your domain at /etc/apache2/sites-available/my_domain.conf with the ServerName and also the ServerAlias directives already set appropriately.
To verify this, open the virtual hosts file for your domain using
nano or your favorite text editor:
$ sudo nano /etc/apache2/sites-available/your_domain.conf
Find the existing ServerName and ServerAlias lines. They should look something like this:
If you already have your ServerName and ServerAlias set up like this, you can exit the text editor and go to the next step. From the nano editor, you can exit by typing
CTRL + X, then
ENTER to confirm.
If your current virtual host configuration doesn’t match the example, update it accordingly. When done, save the file and exit the editor. Then, run the following command to validate your changes:
$ sudo apache2ctl configtest
You should get an OK Syntax as an answer. If you get an error, reopen the virtual host file and check for typos or missing characters. Once the syntax of your configuration file is correct, reload Apache so that the changes take effect:
$ sudo systemctl reload apache2
With these changes, Certbot will be able to find the correct VirtualHost block and update it.
We will now update the firewall to allow HTTPS traffic.
Step 3. allow traffic through the firewall
If you have UFW firewall enabled, as recommended by the prerequisite guides, you will need to adjust the settings to allow HTTPS traffic. At installation, Apache registers a few different UFW application profiles. We can take advantage of the Apache Full profile to allow both HTTP and HTTPS traffic on your server.
To check what kind of traffic is currently allowed on your server, you can use:
$ sudo ufw status
Your output should look something like this, which means that currently only HTTP traffic on port 80 is allowed:
Output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)
To also allow HTTPS traffic to enter, allow the Apache Full profile and delete the redundant Apache profile:
$ sudo ufw allow 'Apache Full'
$ sudo ufw delete allow 'Apache'
The status should now look something like this:
$ sudo ufw status
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache Full (v6) ALLOW Anywhere (v6)
You are now ready to manage Certbot and get your certificates.
Step 4. Obtain an SSL certificate
Certbot provides a variety of ways to obtain and install SSL certificates through plugins. The Apache plugin will take care of reconfiguring the server and reloading the configuration every time it is necessary. To use this plugin, type the following:
$ sudo certbot --apache
This script will ask you to answer a series of questions to configure your SSL certificate. First, it will ask you for a valid email address. This email will be used for renewal notifications and security alerts. After providing a valid email address, press
ENTER to proceed to the next step. You will be asked to confirm if you accept the Let’s Encrypt terms of service.You can confirm by pressing A and then
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A
Next, you will be asked if you would like to share your email with the Electronic Frontier Foundation to receive news and other information. If you don’t want to subscribe to their content, type
N. Otherwise, type Y. Then, press
ENTER to proceed to the next step.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: N
The next step will ask you to tell Certbot which domains you want to enable HTTPS for. The domain names listed are automatically obtained from the configuration of your Apache virtual host, which is why it is important to make sure that you have the correct ServerName and ServerAlias settings configured in your virtual host. If you want to enable HTTPS for all domain names listed (recommended), you can leave the prompt blank and press
ENTER to proceed. Otherwise, select the domains you want to enable HTTPS for by listing each appropriate number, separated by commas and / or spaces, then press
ENTER. You’ll see the output more or less like this:
Obtaining a new certificate Performing the following challenges: http-01 challenge for mio_dominio http-01 challenge for www.mio_dominio Enabled Apache rewrite module Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/mio_dominio-le-ssl.conf Enabled Apache socache_shmcb module Enabled Apache ssl module Deploying Certificate to VirtualHost /etc/apache2/sites-available/mio_dominio-le-ssl.conf Enabling available site: /etc/apache2/sites-available/mio_dominio-le-ssl.conf Deploying Certificate to VirtualHost /etc/apache2/sites-available/mio_dominio-le-ssl.conf
Next, you will be asked to select whether you want HTTP traffic to be redirected to HTTPS or not. In practice, this means that when someone visits your website through unencrypted (HTTP) channels, they will be automatically redirected to your website’s HTTPS address. Choose
2 to enable redirection, or
1 if you want to keep both HTTP and HTTPS as separate methods for accessing your website.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
After this step, the Certbot configuration is finished, and you will be presented with the final remarks about your new ssl certificate, where to locate the generated files and how to test your configuration using an external tool that analyzes the authenticity of your certificate.
Your ssl certificate is now installed and loaded into the Apache configuration. Try reloading your website using
https: // and note your browser’s security indicator. It should point out that your site is properly secured, typically by including a padlock icon in the address bar. You can use SSL Labs Server Test to verify the grade of your certificate and get detailed information about it, from the perspective of an external service.
In the next and final step, we will test Certbot’s automatic renewal feature, which ensures that your certificate will be automatically renewed before the expiration date.
Step 5. Verify the automatic renewal of Certbot
Let’s Encrypt certificates are only valid for ninety days. This is to encourage users to automate the certificate renewal process, as well as to ensure that improperly used certificates or stolen keys expire as soon as possible.
certbot package we installed takes care of the renewals by including a renewal script at
/etc/cron.d, which is managed by a
systemctl service called
certbot.timer. This script runs twice a day and will automatically renew any certificate within thirty days of expiration.
To check the status of this service and make sure it is up and running, you can use the following command:
$ sudo systemctl status certbot.timer
The output should be:
● certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2020-04-28 17:57:48 UTC; 17h ago Trigger: Wed 2020-04-29 23:50:31 UTC; 12h left Triggers: ● certbot.service Apr 28 17:57:48 fine-turtle systemd: Started Run certbot twice daily.
To test the renewal process, you can do a test with certbot:
$ sudo certbot renew --dry-run
If you see no mistakes, you are good to go.
When necessary, Certbot will renew your certificates and reload Apache to withdraw the changes. Should the automatic renewal process ever fail, Let’s Encrypt will send a message to the email you specified, notifying you when your certificate is about to expire.
In this tutorial, you have installed the Let’s Encrypt client on
certbot, you have configured and installed an SSL certificate for your domain and you have confirmed that the Certbot automatic renewal service is active within
systemctl. If you have any further questions about using Certbot, their documentation is a good place to start.
This guide can be used with any Debian based system on which Apache is installed, therefore also a VPS that you can get via SOD.
- The SOAR benefits: simplifying investigation and response
- Security Code Review: How the service works
- Integration of the automated response: the automations in SOCaaS
- Coordination between CTI and SOC: how to further raise the defenses
- New Cloud Server: redundant internet
- Quality certificate for the SOCaaS of SOD
- Managed Detection and Response: a new preventive approach
- CLUSIT: our collaboration for better services
- Backup as a Service (17)
- Cloud Conference (3)
- Cloud CRM (1)
- Cloud Server/VPS (22)
- Conferenza Cloud (4)
- ICT Monitoring (5)
- Log Management (2)
- News (21)
- ownCloud (4)
- Privacy (7)
- Secure Online Desktop (15)
- Security (170)
- Web Hosting (15)
- Worried About the Exchange Zero-Day? Here's What to Do September 30, 2022While organizations wait for an official patch for the two zero-day flaws in Microsoft Exchange, they should scan their networks for signs of exploitation and apply these mitigations.
- LA School District Ransomware Attackers Now Threaten to Leak Stolen Data September 30, 2022Weeks after it breached the Los Angeles Unified School District, the Vice Society ransomware group is threatening to leak the stolen data, unless they get paid.
- Reshaping the Threat Landscape: Deepfake Cyberattacks Are Here September 30, 2022It's time to dispel notions of deepfakes as an emergent threat. All the pieces for widespread attacks are in place and readily available to cybercriminals, even unsophisticated ones.
- Cybercriminals See Allure in BEC Attacks Over Ransomware September 30, 2022While ransomware seems stalled, business email compromise (BEC) attacks continue to make profits from the ProxyShell and Log4j vulnerabilities, nearly doubling in the latest quarter.
- Trojanized, Signed Comm100 Chat Installer Anchors Supply Chain Attack September 30, 2022Malicious Comm100 files have been found scattered throughout North America, and across sectors including tech, healthcare, manufacturing, telecom, insurance, and others.
- Microsoft Confirms Pair of Blindsiding Exchange Zero-Days, No Patch Yet September 30, 2022The "ProxyNotShell" security vulnerabilities can be chained for remote code execution and total takeover of corporate email platforms.
- SolarMarker Attack Leverages Weak WordPress Sites, Fake Chrome Browser Updates September 30, 2022The SolarMarker group is exploiting a vulnerable WordPress-run website to encourage victims to download fake Chrome browser updates, part of a new tactic in its watering-hole attacks.
- With the Software Supply Chain, You Can't Secure What You Don't Measure September 30, 2022Reports to the National Vulnerability Database jumped in 2022, but we should pay just as much attention to the flaws that are not being reported to NVD, including those affecting the software supply chain.
- Onyxia Raises $5M to Help Companies Proactively Manage Cybersecurity Risks Using AI September 30, 2022Onyxia, an AI-powered cybersecurity strategy and performance platform providing a centralized way for security teams to monitor and manage cybersecurity efforts in real time, has raised $5 million in seed fundraising led by World Trade Ventures with participation by Silvertech Ventures and angel investors.
- Cyera Survey Finds One in Three Respondents Want to Minimize Cloud Data Risk September 30, 2022Multiple providers say 'cloud data sprawl' makes managing cloud data risk a priority initiative within the next 12 months.
- ZKBioSecurity 3.0.5- Privilege Escalation to Admin (CVE-2022-36634) October 1, 2022Posted by Caio B on Sep 30#######################ADVISORY INFORMATION####################### Product: ZKSecurity BIO Vendor: ZKTeco Version Affected: 22.214.171.124_R CVE: CVE-2022-36634 Vulnerability: User privilege escalation #######################CREDIT####################### This vulnerability was discovered and researched by Caio Burgardt and Silton Santos. #######################INTRODUCTION####################### Based on the hybrid biometric technology and...
- ZKBiosecurity - Authenticated SQL Injection resulting in RCE (CVE-2022-36635) October 1, 2022Posted by Caio B on Sep 30#######################ADVISORY INFORMATION####################### Product: ZKSecurity BIO Vendor: ZKTeco ( https://www.zkteco.com/en/ZKBiosecurity/ZKBioSecurity_V5000_4.1.2) Version Affected: 4.1.2 CVE: CVE-2022-36635 Vulnerability: SQL Injection (with a plus: RCE) #######################CREDIT####################### This vulnerability was discovered and researched by Caio Burgardt and Silton Santos....
- Backdoor.Win32.Augudor.b / Remote File Write Code Execution September 27, 2022Posted by malvuln on Sep 27Discovery / credits: Malvuln (John Page aka hyp3rlinx) (c) 2022 Original source: https://malvuln.com/advisory/94ccd337cbdd4efbbcc0a6c888abb87d.txt Contact: malvuln13 () gmail com Media: twitter.com/malvuln Threat: Backdoor.Win32.Augudor.b Vulnerability: Remote File Write Code Execution Description: The malware drops an empty file named "zy.exe" and listens on TCP port 810. Third-party adversaries who can reach the infected […]
- Backdoor.Win32.Psychward.b / Weak Hardcoded Credentials September 27, 2022Posted by malvuln on Sep 27Discovery / credits: Malvuln (John Page aka hyp3rlinx) (c) 2022 Original source: https://malvuln.com/advisory/0b8cf90ab9820cb3fcb7f1d1b45e4e57.txt Contact: malvuln13 () gmail com Media: twitter.com/malvuln Threat: Backdoor.Win32.Psychward.b Vulnerability: Weak Hardcoded Credentials Description: The malware listens on TCP port 8888 and requires authentication. However, the password "4174" is weak and hardcoded in cleartext within the PE...
- Backdoor.Win32.Bingle.b / Weak Hardcoded Credentials September 27, 2022Posted by malvuln on Sep 27Discovery / credits: Malvuln (John Page aka hyp3rlinx) (c) 2022 Original source: https://malvuln.com/advisory/eacaa12336f50f1c395663fba92a4d32.txt Contact: malvuln13 () gmail com Media: twitter.com/malvuln Threat: Backdoor.Win32.Bingle.b Vulnerability: Weak Hardcoded Credentials Description: The malware is packed using ASPack 2.11, listens on TCP port 22 and requires authentication. However, the password "let me in" is weak […]
- SEC Consult SA-20220923-0 :: Multiple Memory Corruption Vulnerabilities in COVESA (Connected Vehicle Systems Alliance) DLT daemon September 27, 2022Posted by SEC Consult Vulnerability Lab, Research via Fulldisclosure on Sep 27SEC Consult Vulnerability Lab Security Advisory < 20220923-0 > ======================================================================= title: Multiple Memory Corruption Vulnerabilities product: COVESA DLT daemon (Diagnostic Log and Trace) Connected Vehicle Systems Alliance (COVESA), formerly GENIVI vulnerable version:
- Backdoor.Win32.Hellza.120 / Authentication Bypass September 20, 2022Posted by malvuln on Sep 19Discovery / credits: Malvuln (John Page aka hyp3rlinx) (c) 2022 Original source: https://malvuln.com/advisory/2cbd0fcf4d5fd5fb6c8014390efb0b21_B.txt Contact: malvuln13 () gmail com Media: twitter.com/malvuln Threat: Backdoor.Win32.Hellza.120 Vulnerability: Authentication Bypass Description: The malware listens on TCP ports 12122, 21. Third-party adversarys who can reach infected systems can logon using any username/password combination....
- Backdoor.Win32.Hellza.120 / Unauthorized Remote Command Execution September 20, 2022Posted by malvuln on Sep 19Discovery / credits: Malvuln (John Page aka hyp3rlinx) (c) 2022 Original source: https://malvuln.com/advisory/2cbd0fcf4d5fd5fb6c8014390efb0b21.txt Contact: malvuln13 () gmail com Media: twitter.com/malvuln Threat: Backdoor.Win32.Hellza.120 Vulnerability: Unauthorized Remote Command Execution Description: The malware listens on TCP ports 12122, 21. Third-party adversarys who can reach infected systems can issue commands made available by the...
- Trojan.Ransom.Ryuk.A / Arbitrary Code Execution September 20, 2022Posted by malvuln on Sep 19Discovery / credits: Malvuln (John Page aka hyp3rlinx) (c) 2022 Original source: https://malvuln.com/advisory/5ac0f050f93f86e69026faea1fbb4450.txt Contact: malvuln13 () gmail com Media: twitter.com/malvuln Threat: Trojan.Ransom.Ryuk.A Vulnerability: Arbitrary Code Execution Description: The ransomware looks for and executes DLLs in its current directory. Therefore, we can potentially hijack a vuln DLL execute our own code, […]
- Trojan-Dropper.Win32.Corty.10 / Insecure Credential Storage September 20, 2022Posted by malvuln on Sep 19Discovery / credits: Malvuln (John Page aka hyp3rlinx) (c) 2022 Original source: https://malvuln.com/advisory/f72138e574743640bdcdb9f102dff0a5.txt Contact: malvuln13 () gmail com Media: twitter.com/malvuln Threat: Trojan-Dropper.Win32.Corty.10 Vulnerability: Insecure Credential Storage Description: The malware stores its credentials in cleartext within the Windows registry. Family: Corty Type: PE32 MD5: f72138e574743640bdcdb9f102dff0a5 Vuln ID:...
Estimated reading time: 6 minutes L'impatto crescente delle minacce informatiche, su sistemi operativi privati op… https://t.co/FimxTS4o9G
Estimated reading time: 6 minutes The growing impact of cyber threats, on private or corporate operating systems… https://t.co/y6G6RYA9n1
Tempo di lettura stimato: 6 minuti Today we are talking about the CTI update of our services. Data security is… https://t.co/YAZkn7iFqa
Estimated reading time: 6 minutes Il tema della sicurezza delle informazioni è di grande attualità in questo peri… https://t.co/tfve5Kzr09
Estimated reading time: 6 minutes The issue of information security is very topical in this historical period ch… https://t.co/TP8gvdRcrF