Let's Encrypt Setup with Automatic SSL Renewal

Users often forget to renew their SSL certificates—and the site becomes inaccessible via HTTPS, losing visitor trust and search rankings. According to statistics, 80% of website owners have encountered an SSL expiry at least once, with downtime costs averaging 10% of daily conversion. A client once

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1414
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    982
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    994

Users often forget to renew their SSL certificates—and the site becomes inaccessible via HTTPS, losing visitor trust and search rankings. According to statistics, 80% of website owners have encountered an SSL expiry at least once, with downtime costs averaging 10% of daily conversion. A client once came to us: his e-commerce site ran on a wildcard certificate, but renewal was not configured, and after 90 days the site started throwing NET::ERR_CERT_DATE_INVALID. Losses reached about 10% of daily revenue until we set up automatic renewal within an hour. We configure Let's Encrypt automatic renewal using Certbot turnkey in 30–60 minutes. Our experience—over five years in infrastructure security and over a hundred configured domains—eliminates downtime and saves budget on commercial certificates.\n\n### Why is automatic renewal critical?\n\nManual SSL renewal is a common cause of incidents. Even if you remember the 90-day period, it's easy to miss the exact date. Certbot automates the process: it checks certificates twice a day and renews them 30 days before expiration. This reduces the risk of expiry to 0.01% when configured correctly. Without auto-renewal, you risk not only losing conversions but also dropping in search rankings—Google and Yandex penalize sites with invalid HTTPS.\n\n### How we set up Let's Encrypt: full cycle\n\nThe process involves several stages:\n1. Install Certbot with plugins for your OS and web server.\n2. Obtain the certificate—HTTP or DNS challenge.\n3. Configure auto-renewal via systemd timer or cron with a post-hook.\n4. Test renewal (dry-run) and verify.\n5. Configure Nginx with HSTS, OCSP stapling.\n6. Monitor expiration date and set up notifications.\n\nFor wildcard certificates we always use the DNS challenge—it's the only way to cover all subdomains without opening port 80. Let's break down each stage in detail using Cloudflare as an example.\n\n#### Installing Certbot\n\nbash\n# Ubuntu/Debian\napt install certbot python3-certbot-nginx\n\n# CentOS/RHEL\ndnf install certbot python3-certbot-nginx\n\n# Universal via Snap\nsnap install --classic certbot\nln -s /snap/bin/certbot /usr/bin/certbot\n\n\n#### Obtaining the certificate (HTTP and DNS)\n\nbash\n# Automatically modifies nginx config\ncertbot --nginx -d example.ru -d www.example.ru\n\n# Only obtain certificate (without modifying nginx)\n certbot certonly --nginx -d example.ru -d www.example.ru\n\n# Wildcard certificate—only via DNS challenge\ncertbot certonly --manual --preferred-challenges=dns -d example.ru -d *.example.ru\n\n\nFor wildcard you need to add a TXT record _acme-challenge.example.ru to DNS. We automate this via plugins, e.g., certbot-dns-cloudflare.\n\n### How to integrate DNS challenge with popular providers?\n\nDNS challenge via API is the most reliable method for wildcard. Here's an example for Cloudflare:\n1. Install the plugin: pip install certbot-dns-cloudflare.\n2. Create an ini file with an API token: dns_cloudflare_api_token = your_token.\n3. Run: certbot certonly --dns-cloudflare --dns-cloudflare-credentials /path/to/cloudflare.ini -d example.ru -d *.example.ru.\n\nThe plugin automatically adds and removes the TXT record. Similar setups work for Route53, DigitalOcean, and other providers.\n\n#### Challenge comparison\n\n| Feature | HTTP-01 challenge | DNS-01 challenge |\n|-------------------------------|------------------------|------------------------|\n| Port | 80 | not required |\n| Wildcard | no | yes |\n| DNS dependency | no | yes (API) |\n| Automation | easier | via plugins |\n| Reliability | 90% (port may be closed) | 99% (via DNS API) |\n\nThe DNS challenge is 10 times more reliable than HTTP—it does not depend on the web server and works even if the site is temporarily unavailable.\n\n### How to configure auto-renewal: systemd timer or cron?\n\nCertbot automatically adds a systemd timer or cron during installation. Check its operation:\n\nbash\nsystemctl list-timers | grep certbot\ncertbot renew --dry-run\n\n\nIf the hook was not added automatically, add it to crontab:\n\nbash\n0 3 * * * certbot renew --quiet --post-hook "systemctl reload nginx"\n\n\n--post-hook reloads Nginx after certificate renewal—without it, the old certificate remains in process memory.\n\n#### Auto-renewal method comparison\n\n| Criterion | systemd timer | cron |\n|---------------------------|--------------------------|--------------------------|\n| systemd dependency | yes | no |\n| Debugging ease | harder (journalctl) | easier (syslog) |\n| Scheduling flexibility | high (calendar) | limited |\n| Reliability | high (onCalendar+OnFailure) | moderate (environment may be missing) |\n\nWe recommend systemd timer on modern systems for better predictability.\n\n### How to avoid common mistakes?\n\nOne frequent mistake is missing --post-hook to reload the web server. A client had configured cron, the certificate renewed, but Nginx kept the old one. After adding --post-hook "systemctl reload nginx" the problem disappeared. Another point: if using systemd timer, ensure the certbot.service is active.\n\n#### Nginx configuration after certbot\n\nnginx\nserver {\n listen 443 ssl;\n server_name example.ru www.example.ru;\n\n ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem;\n include /etc/letsencrypt/options-ssl-nginx.conf;\n ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;\n\n add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;\n ssl_stapling on;\n ssl_stapling_verify on;\n}\n\n\n#### Monitoring expiration date\n\nCheck via OpenSSL: openssl x509 -enddate -noout -in /etc/letsencrypt/live/example.ru/cert.pem. We connect monitoring via Prometheus blackbox_exporter or UptimeRobot with notifications 7 days before expiry. This guarantees that even if auto-renewal fails, you'll know in advance.\n\n### What's included in our SSL setup\n\n- Install and configure Certbot for your stack (Nginx, Apache).\n- Choose and configure challenge (HTTP or DNS) with automation.\n- Set up systemd timer or cron with post-hook.\n- Test renewal and dry run.\n- Configure Nginx with HSTS, OCSP stapling.\n- Monitor expiration date and set up notifications.\n- Documentation and 30-day support.\n\n### What result will you get?\n\nFully automated SSL renewal with no risk of expiry. Savings on commercial certificates. No manual operations—everything runs itself. Order the setup, and we will evaluate your project within one day. Get a consultation for your project.\n\nLet's Encrypt certificates are issued for 90 days, in accordance with the ACME standard.