SSD Nodes Learn
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-07-25

Ubuntu 24.04 Apache కోసం Certbot ఇన్‌స్టాల్

Ubuntu 24.04 లో apt ద్వారా Certbot 2.9.0 ఇన్‌స్టాల్ చేసి ఒకే ఆదేశంతో Apache కి ఉచిత Let's Encrypt సర్టిఫికేట్ పొందండి. snap అవసరం లేదు. ServerName లేకపోతే జారీ ఆగిపోతుంది.

మీరు నిర్మించేది ఏమిటి

Ubuntu 24.04 లో ఒక Apache సైట్, ఇది HTTPS పై స్పందిస్తుంది. ఇది ఉచితం, బ్రౌజర్-విశ్వసనీయ Let's Encrypt సర్టిఫికేట్‌తో నడుస్తుంది. ఈ సర్టిఫికేట్‌ను Certbot జారీ చేస్తుంది. దీనిని మీరు మళ్లీ ఆలోచించనవసరం లేని ఒక systemd టైమర్ స్వయంచాలకంగా నవీకరిస్తుంది. పనిని పూర్తి చేసే ఆదేశం ఒకే ఒక్క లైన్. ప్రతి తప్పు ఆ లైన్‌కు ముందు జరుగుతుంది: ServerName లేని vhost, ప్రొవైడర్ ఫైర్‌వాల్ వద్ద పోర్ట్ 80 మూసివేత, DNS ఇంకా పాత సర్వర్‌ను సూచించడం. కాబట్టి ఈ గైడ్ ఎక్కువ సమయాన్ని ముందస్తు షరతులపై గడుపుతుంది. ప్రతి తప్పు ఏ కచ్చితమైన ఎర్రర్ స్ట్రింగ్‌ను ప్రింట్ చేస్తుందో కూడా పేర్కొంటుంది.

రెండు పరిధి గమనికలు. మీ వెబ్ సర్వర్ nginx అయితే, ప్రక్రియ ఒకే విధంగా ఉంటుంది కానీ ప్లగిన్ మరియు కాన్ఫిగరేషన్లు భిన్నంగా ఉంటాయి — దానికి బదులుగా ఈ గైడ్ యొక్క nginx వెర్షన్ ఉపయోగించండి. మరియు మీరు సురక్షితం చేసేది అంతర్గతంగా మాత్రమే ఉంటే — ప్రైవేట్ చిరునామాలో ఒక అడ్మిన్ ప్యానెల్, మరెవరూ సందర్శించని ఒక స్టేజింగ్ బాక్స్ — మీకు సర్టిఫికేట్ అథారిటీ అసలు అవసరం లేదు; ఒక సెల్ఫ్-సైన్డ్ సర్టిఫికేట్ తక్కువ యంత్రాంగంతో పనిచేస్తుంది మరియు ఆఫ్‌లైన్‌లో కూడా పనిచేస్తుంది.

ముందస్తు అవసరాలు, మరియు Certbot నడవక ముందే ఈ పని విఫలమయ్యే మూడు విధాలు

  • Apache ఇప్పటికే మీ సైట్‌ను సాధారణ HTTP ద్వారా అందిస్తోంది. Certbot యొక్క Apache ప్లగిన్ ఉన్న సైట్‌ను సవరిస్తుంది; అది కొత్తది సృష్టించదు. మీరు ఖాళీ VPS తో ప్రారంభిస్తే, ముందుగా Ubuntu 24.04 లో LAMP స్టాక్ ను సెటప్ చేసుకుని ఇక్కడకు రాండి — ఈ గైడ్ దానికి లేని TLS అధ్యాయం.
  • మీ VPS చిరునామా వద్ద A రికార్డుతో కూడిన పబ్లిక్ డొమైన్. Let's Encrypt యొక్క HTTP-01 ఛాలెంజ్ అంటే వారి ధృవీకరణ సర్వర్లు ఇంటర్నెట్ నుండి మీ సర్వర్‌కు అనుసంధానం అవుతాయి: పోర్ట్ ఫార్వార్డ్ లేని NATed హోమ్‌ల్యాబ్ పనిచేయదు, .local పేర్లు పనిచేయవు, ఖాళీ IP లు పనిచేయవు. dig +short example.com మీ VPS చిరునామాను తిరిగి ఇవ్వాలి, మరియు మీరు తాజా గంటలో DNS మార్చినట్లయితే, సర్టిఫికెట్ జారీ చేయడానికి ముందు పాత రికార్డు యొక్క TTL సమయం గడిచే వరకు వేచి ఉండండి.
  • AAAA రికార్డు ఉంటే, అది సరైనది అయి ఉండాలి. Let's Encrypt AAAA రికార్డు ప్రచురించబడినప్పుడు IPv6 ను ప్రాధాన్యత ఇస్తుంది, కాబట్టి పాత AAAA ధృవీకరణను విఫలం చేస్తుంది, అదే సమయంలో మీ లాప్‌టాప్ నుండి curl — బహుశా IPv4 లో — సరిగ్గా పనిచేస్తుంది. సరైన AAAA ప్రచురించండి లేదా ఏమీ ప్రచురించకండి.

పోర్ట్‌లు 80 మరియు 443 ufw లో మరియు మీ ప్రొవైడర్ యొక్క నెట్‌వర్క్ ఫైర్‌వాల్ లో తెరిచి ఉండాలి — చాలా హోస్టింగ్ ప్యానెల్‌లలో OS చూడని రెండవ ఫైర్‌వాల్ ఉంటుంది. HTTP-01 ధృవీకరణ ప్రత్యేకంగా పోర్ట్ 80 ద్వారా జరుగుతుంది; దీన్ని మీరు 443 మాత్రమే ఉపయోగించి నడపలేరు.

sudo ufw allow "Apache Full"
sudo ufw status

ఇవన్నీ సిద్ధంగా ఉంటే మొత్తం పని పదిహేను నిమిషాలు, వాటిలో పది నిమిషాలు చదవడానికి.

Snap లేదా apt Certbot? 24.04లో, apt చివరకు సరైనదే

ఒక సరైన కారణం వల్ల సంవత్సరాల క్రితం Certbot snap పంపిణీకి మారింది: డిస్ట్రో ప్యాకేజీలు పూర్తిగా నిలిచిపోయాయి. Ubuntu 20.04 Certbot 0.40ని అందించింది మరియు దాన్ని ఎప్పుడూ నవీకరించలేదు, మరియు ఆ ప్రాజెక్ట్ ఐదేళ్ల పాత బగ్‌లను పరిష్కరించడానికి విసిగిపోయింది. 24.04లో ఆ కారణం పోయింది — ఆర్కైవ్ Certbot 2.9.0ని అందిస్తుంది, ఇది ప్రస్తుత తరం విడుదల, మరియు unattended-upgrades దాన్ని ప్యాచ్ చేస్తూనే ఉంటుంది. ఈ OS కోసం నా సూచన: apt ఉపయోగించండి. మీరు snapd డెమోన్‌ని దాటేస్తారు, Apache ప్లగిన్ అదే లావాదేవీలో ఇన్‌స్టాల్ అవుతుంది, మరియు రెన్యూవల్ టైమర్ సాధారణ Debian పద్ధతిలో systemdతో ఏకీభవిస్తుంది.

sudo apt update
sudo apt install -y certbot python3-certbot-apache
certbot --version

సరైన ఫలితం: certbot 2.9.0. python3-certbot-apache ప్యాకేజీ అనేది మీ Apache కాన్ఫిగ్‌లను చదివి సవరించే ప్లగిన్ — దీని లేకుండా, certbot --apache The requested apache plugin does not appear to be installedతో విఫలమవుతుంది.

రెండు సందర్భాల్లో snap ఇప్పటికీ సరైన ఎంపిక: మీకు విడుదలైన రోజునే కొత్త Certbot కావాలి, లేదా మీకు snapగా మాత్రమే పంపిణీ చేయబడే DNS ప్లగిన్ అవసరం (certbot-dns-* ప్రొవైడర్ ప్లగిన్‌లలో అనేకం అలా ఉన్నాయి). మీరు ఆ మార్గంలో వెళ్తే:

sudo apt remove -y certbot python3-certbot-apache
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

మీరు ఏది ఎంచుకున్నా, రెండింటినీ ఎప్పుడూ రన్ చేయవద్దు. రెండు ఇన్‌స్టాలేషన్‌లు అంటే /etc/letsencrypt కోసం పోరాడుతున్న రెండు రెన్యూవల్ షెడ్యూలర్‌లు, మరియు మీ షెల్ PATHలో కనుగొనే certbot మీ సర్టిఫికేట్‌లను కలిగి ఉన్నది కాకపోవచ్చు. పైన ఉన్న apt remove లైన్ కేవలం అలంకారం కాదు.

Certbot సవరించే vhost ముందుగానే ఉండాలి — ServerName అన్నీ అన్నీ

certbot --apache పనిచేసే విధానం ఏమిటంటే, మీరు అందించే ప్రతి -d డొమైన్‌తో సరిపోలే ServerName లేదా ServerAlias కలిగిన port-80 వర్చువల్ హోస్ట్‌ను కనుగొనడం, ఆ డొమైన్ నియంత్రణను దాని ద్వారా రుజువు చేయడం, తర్వాత ఆ vhost‌కు SSL రెండవ కాపీని వ్రాయడం. సరిపోలే ServerName లేకపోతే, అది ఏ మ్యాచ్ కూడా కనుగొనదు — మరియు Ubuntu యొక్క డిఫాల్ట్ 000-default.conf‌లో ServerName కామెంట్ చేయబడి ఉంటుంది. ఆ ఒక్క కామెంట్ చేయబడిన లైనే ఈ గైడ్‌లోని ఒకే పెద్ద కమాండ్ విఫలమవ్వడానికి అత్యంత సాధారణ కారణం.

కాబట్టి Certbot‌ను తాకడానికి ముందు, సైట్‌కు సరైన పేరు-ఆధారిత vhost‌ను ఇవ్వండి. /etc/apache2/sites-available/example.com.conf‌ను సృష్టించండి:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>

దాన్ని ఎనేబుల్ చేసి, Apache దాన్ని పార్స్ చేసి, ఆ పేరును దానికి రూట్ చేస్తుందని నిర్ధారించుకోండి:

sudo a2ensite example.com.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
sudo apache2ctl -S

configtest తప్పనిసరిగా Syntax OK‌ను ప్రింట్ చేస్తుంది. అది AH00558: apache2: Could not reliably determine the server's fully qualified domain name‌ను కూడా ప్రింట్ చేస్తే, అది గ్లోబల్ ServerName గురించి ఒక హెచ్చరిక — మీ vhost గురించి కాదు — ఇక్కడ అది ప్రమాదకరం కాదు, మరియు echo "ServerName $(hostname -f)" | sudo tee /etc/apache2/conf-available/servername.conf && sudo a2enconf servername && sudo systemctl reload apache2 ద్వారా దాన్ని నిశ్శబ్దం చేయవచ్చు.

-S అవుట్‌పుట్ అనేది ముఖ్యమైన తనిఖీ. మీకు port 80 namevhost example.com (/etc/apache2/sites-enabled/example.com.conf:1) వంటి ఒక లైన్ కావాలి, దాని కింద alias www.example.com ఉండాలి — Apache మీరు sites-available‌లో సవరించిన ఫైల్‌ను కాకుండా, అది నిజంగా చదివిన sites-enabled సిమ్‌లింక్‌ను నివేదిస్తుంది. example.com port 80 వద్ద జాబితా చేయబడి లేకపోతే, Certbot కూడా దాన్ని కనుగొనదు.

సర్టిఫికేట్‌ను జారీ చేయండి: certbot --apache

sudo certbot --apache -d example.com -d www.example.com

మొదటి రన్ మూడు విషయాలను అడుగుతుంది: ఒక ఇమెయిల్ చిరునామా (మీ ACME ఖాతా మరియు అత్యవసర CA నోటీసుల కోసం ఉపయోగిస్తారు; Let's Encrypt ఇకపై గడువు హెచ్చరికలను పంపదు, కాబట్టి రెన్యూవల్‌లను పర్యవేక్షించడం మీ బాధ్యత), Let's Encrypt నిబంధనలకు అంగీకారం, మరియు మీ ఇమెయిల్‌ను EFFతో పంచుకోవాలా వద్దా అని. ఇక రీడైరెక్ట్ ప్రశ్న లేదు: Certbot 2.0 నుండి Apache ఇన్‌స్టాలర్ డిఫాల్ట్‌గా HTTPని HTTPSకి రీడైరెక్ట్ చేస్తుంది, అదే మీకు కావలసింది. మీకు నిజంగా ప్లెయిన్ HTTP కంటెంట్‌ను అందించడం అవసరమైతే --no-redirect పాస్ చేయండి.

విజయం ఇలా కనిపిస్తుంది, దాన్ని కేవలం క్షణికంగా చూడకుండా పూర్తిగా చదవండి:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/example.com/privkey.pem
This certificate expires on 2026-10-14.

Deploying certificate
Successfully deployed certificate for example.com to /etc/apache2/sites-available/example.com-le-ssl.conf
Successfully deployed certificate for www.example.com to /etc/apache2/sites-available/example.com-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://example.com and https://www.example.com

ఆ సందేశం వెనుక Certbot నాలుగు పనులు చేసింది: ఇది ఇప్పటికే ఉంటే తప్ప Apache యొక్క ssl మాడ్యూల్‌ను ప్రారంభించింది, example.com-le-ssl.conf రాసింది — అది మీ vhost యొక్క కాపీ *:443 పై SSLEngine on మరియు సర్టిఫికేట్ పాత్‌లతో — దాన్ని ప్రారంభించింది, మరియు అసలు port-80 vhostకి ఒక RewriteRule బ్లాక్‌ను జోడించింది, అది ప్రతిదాన్ని 301తో HTTPSకి పంపుతుంది. మీ అసలు vhost ఫైల్ భర్తీ చేయబడదు, సవరించబడుతుంది, మరియు SSL ట్విన్ దాని పక్కనే ఉంటుంది, అక్కడ మీరు అది జోడించిన ప్రతి వరుసను చదవవచ్చు.

సర్టిఫికేట్ వాస్తవానికి ఎక్కడ ఉంటుంది, మరియు దాన్ని మీరు ఎందుకు ఎప్పుడూ కాపీ చేయకూడదు

ప్రతిదీ /etc/letsencrypt/live/example.com/ కింద లాగివస్తుంది: fullchain.pem (సర్టిఫికేట్ మరియు ఇంటర్మీడియట్ చైన్ — సర్వర్‌లు దేనివైపు పాయింట్ చేయాలి), privkey.pem (ప్రైవేట్ కీ, రూట్-రీడబుల్ మాత్రమే), అలాగే భాగాలను వేరుగా కావాల్సిన సాఫ్ట్‌వేర్ కోసం cert.pem మరియు chain.pem. ఇవి /etc/letsencrypt/archive/ లోకి సిమ్‌లింక్‌లు. ఆ మళ్లింపే రెన్యూవల్ మెకానిజం. రెన్యూవల్ కొత్త ఫైళ్లను archive/ లోకి రాస్తుంది మరియు సిమ్‌లింక్‌లను మళ్లిస్తుంది. ఏదైనా ఇతర సాఫ్ట్‌వేర్‌ను live/ పాత్‌ల వైపు పాయింట్ చేయండి. అది రెన్యూవల్‌లను స్వేచ్ఛగా పట్టుకుంటుంది. ఫైళ్లను ఎక్కడైనా కాపీ చేస్తే 90 రోజుల్లో మీకు అంతరిక్ష ఆటంకం సొంతం చేసుకుంటారు.

తెలుసుకోవడానికి విలువైన మరో ఫైల్ /etc/letsencrypt/renewal/example.com.conf. ఈ సర్టిఫికేట్ ఎలా జారీ చేయబడిందో ఇది నమోదు చేస్తుంది — authenticator = apache, installer = apache, డొమైన్‌లు — తద్వారా రెన్యూవల్ ఆ ప్రక్రియను పర్యవేక్షణ లేకుండా పునరావృతం చేయగలదు, తరువాత Apache ను రీలోడ్ చేయడం కూడా కలుపుకుని.

నవీకరణ ఇప్పటికే షెడ్యూల్ చేయబడింది — దాన్ని ధృవీకరించండి, నిర్మించవద్దు

Let's Encrypt ధృవీకరణ పత్రాలు రూపకల్పన ప్రకారం 90 రోజులు ఉంటాయి. apt ప్యాకేజీ ఇప్పటికే అవసరమైన యంత్రాంగాన్ని ఇన్‌స్టాల్ చేసింది: ఒక systemd టైమర్ రోజుకు రెండుసార్లు యాదృచ్ఛిక సమయాల్లో Certbot ను నడుపుతుంది. గడువు ముగిసే 30 రోజుల లోపల ఉన్న ఏదైనా ధృవీకరణ పత్రాన్ని ఇది నవీకరిస్తుంది. దానిపై మరో cron ఉద్యోగాన్ని జోడించవద్దు. రెండవ షెడ్యూలర్ లాగ్ రద్దీ మరియు రేట్-లిమిట్ ప్రమాదం తప్ప మరేమీ చేయదు.

systemctl list-timers certbot.timer
sudo certbot renew --dry-run

మొదటి ఆదేశం టైమర్ క్రియాశీలంగా ఉందని చూపుతుంది. తదుపరి సమయం వచ్చే 24 గంటలలోపల ఎక్కడో ఉంటుంది. షెడ్యూల్ రోజుకు రెండుసార్లు యాదృచ్ఛిక ఆలస్యంతో ఉంటుంది, కాబట్టి సరైన సమయం ఉద్దేశపూర్వకంగా ఊహించలేనిదిగా ఉంటుంది (snap ఇన్‌స్టాల్‌లో, టైమర్ దానికి బదులుగా snap.certbot.renew.timer అవుతుంది). డ్రై రన్ Let's Encrypt స్టేజింగ్ వాతావరణంపై పూర్తి నవీకరణ రిహార్సల్‌ను నిర్వహిస్తుంది. ఇది నిజమైన సవాలు, కానీ జారీ చేసిన ధృవీకరణ పత్రం లేదు, రేట్-లిమిట్ ఖర్చు లేదు. సరైన ఫలితం దీనితో ముగుస్తుంది:

Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/example.com/fullchain.pem (success)

డ్రై రన్ విఫలమైతే, ~60 రోజుల్లో జరిగే నిజమైన నవీకరణ కూడా అదే విధంగా విఫలమవుతుంది. ప్రస్తుత ధృవీకరణ పత్రానికి ఇంకా పూర్తి గడువు మిగిలి ఉన్నప్పుడే దాన్ని ఇప్పుడే పరిష్కరించండి. సాధారణ కారణం, జారీ చేసిన తర్వాత జోడించిన ఫైర్‌వాల్ నియమం మళ్లీ port 80 ను మూసివేసి ఉండటం.

curl తో ధ్రువీకరించండి, మరియు పాడ్‌లాక్ ఏమి చూపించాలి

curl -sI http://example.com | head -n 3
curl -I https://example.com
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -dates

మొదటిది HTTP/1.1 301 Moved Permanently ని Location: https://example.com/ హెడర్‌తో రిటర్న్ చేయాలి — అది Certbot ఇన్‌స్టాల్ చేసిన రీడైరెక్ట్. రెండవది curl నుండి ఎలాంటి TLS ఫిర్యాదు లేకుండా HTTP/1.1 200 OK ని రిటర్న్ చేయాలి. మూడవది ఇష్యూవర్‌ను ప్రింట్ చేస్తుంది — R12 లేదా E7 వంటి చిన్న CNతో కూడిన O = Let's Encrypt లైన్ — మరియు notAfter దాదాపు 90 రోజుల వ్యవధిలో ఉంటుంది. బ్రౌజర్‌లో మీకు పాడ్‌లాక్ కనిపిస్తుంది, దానిపై క్లిక్ చేసినప్పుడు అదే ఇష్యూవర్ కనిపిస్తుంది. curl పనిచేసి బ్రౌజర్ హెచ్చరిస్తే, అది దాదాపు ఖచ్చితంగా క్యాచ్ చేయబడిన పేజీ లేదా తప్పు హోస్ట్‌పేర్, సర్టిఫికేట్ సమస్య కాదు.

బహుళ సైట్‌లు: ఒక SAN సర్టిఫికేట్ లేదా ఒక్కో సైటుకు ఒక సర్టిఫికేట్

రెండూ పనిచేస్తాయి; అవి ఒకే విధంగా నవీకరించబడతాయి. ఒకే సర్వర్‌లో సంబంధం లేని సైట్‌ల కోసం, ఒక్కో సైటుకు జారీ ఆదేశాన్ని ఒకసారి అమలు చేయండి — ప్రతి ఒక్కటి live/ కింద దాని స్వంత డైరెక్టరీని మరియు దాని స్వంత నవీకరణ కాన్ఫిగరేషన్‌ను పొందుతుంది, మరియు ఒక డొమైన్‌తో ఏర్పడిన సమస్య మిగతావాటి నవీకరణను ఎప్పటికీ అడ్డుకట్టదు. అదే నా అప్రమేయం.

అనేక పేర్లతో కూడిన ఒక సైటు కోసం, వాటిని ఒకే SAN సర్టిఫికేట్‌లో ఉంచండి — ఒకే సర్టిఫికేట్ 100 పేర్లను కలిగి ఉండగలదు. మీరు ఇప్పటికే పైన example.com మరియు www.example.com తో ఇదే పనిని చేశారు. తరువాత ఇప్పటికే ఉన్న సర్టిఫికేట్‌కు ఒక పేరును జోడించడానికి, సర్టిఫికేట్ పేరును మరియు పూర్తి కొత్త జాబితాను పేర్కొంటూ తిరిగి జారీ చేయండి:

sudo certbot --apache --cert-name example.com -d example.com -d www.example.com -d blog.example.com

Certbot మార్పుచెందిన డొమైన్ సమితిని గుర్తిస్తుంది, విస్తరణను నిర్ధారించమని మిమ్మల్ని అడుగుతుంది, మరియు సర్టిఫికేట్‌ను అదే స్థానంలో భర్తీ చేస్తుంది — అదే live/ పాత్, కాబట్టి మరేమీ తాకాల్సిన అవసరం లేదు. ఈ జాబితా ఒక భర్తీ కాదు, అది ఒక చేర్పు అని గమనించండి: ఆ ఆదేశం నుండి www ను వదిలివేస్తే కొత్త సర్టిఫికేట్ దాన్ని నిశ్శబ్దంగా తీసివేస్తుంది.

వైల్డ్‌కార్డ్‌లకు DNS-01 అవసరం, మరియు సాధారణంగా మీకు ఒక వైల్డ్‌కార్డ్ అవసరం లేదు

HTTP-01 ద్వారా *.example.com జారీ చేయలేరు — వెబ్ సర్వర్‌లో ఒక ఫైల్‌ను ఉంచడం వలన ఒక హోస్ట్‌నేమ్ నియంత్రణ రుజువవుతుంది, మొత్తం నేమ్‌స్పేస్‌ది కాదు. వైల్డ్‌కార్డ్‌లకు DNS-01 సవాలు అవసరం: Certbot అనేది _acme-challenge.example.com వద్ద ఒక TXT రికార్డ్‌ను సెట్ చేస్తుంది. ఆచరణలో దీనర్థం, మీ DNS ప్రొవైడర్ కోసం API ఆధారాలతో కూడిన certbot-dns-* ప్లగిన్, లేదా ప్రతి రెన్యూవల్ సమయంలో --manualతో TXT రికార్డులను మాన్యువల్‌గా సవరించడం (ఇది చాలా కష్టం — దీనిపై ఆధారపడి ప్రణాళిక చేయవద్దు). TXT రికార్డ్ మెకానిక్స్ నుండి ఎటువంటి మానవ ప్రమేయం లేకుండా రెన్యూవల్ చేసే ప్లగిన్ వరకు పూర్తి వాక్‌త్రూ, DNS-01 ద్వారా Certbotతో వైల్డ్‌కార్డ్ సర్టిఫికేట్‌లులో ఉంది. నిజాయితీ సలహా: మీకు నాలుగు తెలిసిన సబ్‌డొమైన్‌లు ఉంటే, ఆ నాలుగింటినీ పేర్కొనే SAN సర్టిఫికేట్ ఒక వైల్డ్‌కార్డ్‌కంటే సరళంగా ఉంటుంది మరియు సర్వర్‌లో DNS API కీలు ఉండవలసిన అవసరం ఉండదు.

వైఫల్య రకాలు, మీరు చూసే స్ట్రింగ్‌లతో

Apache కాన్ఫిగ్ పాడైంది కాబట్టి Certbot ప్రారంభం కావడానికి నిరాకరిస్తుంది.

The apache plugin is not working; there may be problems with your existing configuration.
The error was: MisconfigurationError('Error while running apache2ctl configtest.\n\nAction \'configtest\' failed.\nThe Apache error log may have more information.\n\nAH00526: Syntax error on line 12 of /etc/apache2/sites-enabled/example.com.conf')

ప్లగిన్ ఏదైనా మార్పు చేసే ముందు configtest నడుపుతుంది మరియు Apache సరిగ్గా లేకపోతే ఆగిపోతుంది — ఆ \nలు అక్షరసహితంగా ఉంటాయి ఎందుకంటే Certbot ఆ ఎక్సెప్షన్ reprని అచ్చుగా ప్రచురిస్తుంది. మీరే sudo apache2ctl configtest నడపండి: అది ఫైలు పేరు మరియు వరుసను చూపిస్తుంది — సాధారణంగా చేతితో సవరించిన టైపో, ఇకపై లేని పాత్‌ను సూచించే SSLCertificateFile, లేదా పేర్కొన్నట్లు కానీ ప్రారంభించని మాడ్యూల్ కావచ్చు. అది Syntax OK అని ప్రచురించే వరకు సరిచేయండి, తర్వాత Certbot మళ్లీ నడపండి.

ఏ vhost కూడా ఈ డొమైన్‌తో సరిపోలడం లేదు.

Unable to find a virtual host listening on port 80 which is currently the only challenge port.

ఇది ముందు చెప్పిన లేని-ServerName వైఫల్యం, ఇష్యూ సమయంలో గుర్తించబడింది. Certbot మీ -dతో సరిపోలే ServerName/ServerAlias కోసం ప్రతి ప్రారంభించబడిన port-80 vhostని వెతికింది మరియు ఏమీ కనుగొనలేదు. sudo apache2ctl -S Apache వాస్తవానికి ఏమి రూట్ చేస్తుందో చూపిస్తుంది; సరైన vhostకి ServerName వరుస జోడించండి, రీలోడ్ చేయండి, మళ్లీ ప్రయత్నించండి. దీనికి దగ్గర సంబంధం వాలిడేషన్ తప్పు vhostకి చేరడం — మరొక సైట్ అభ్యర్థనను పట్టుకుంది కాబట్టి ఛాలెంజ్ ప్రతిస్పందన Invalid response ... 404గా తిరిగి వస్తుంది. అదే డయాగ్నోసిస్, అదే సాధనం: apache2ctl -S.

వాలిడేషన్ సమయం ముగిసింది.

Certbot failed to authenticate some domains (authenticator: apache).
...
Detail: ...: Timeout during connect (likely firewall problem)

Let's Encrypt మీ DNS ప్రకటించే చిరునామా వద్ద port 80కి TCP కనెక్షన్ తెరవలేకపోయింది. సంభావ్యత క్రమంలో: మీ ప్రొవైడర్ నెట్‌వర్క్ ఫైర్‌వాల్ (ufw నుండి వేరుగా, హోస్టింగ్ ప్యానెల్‌లో కాన్ఫిగర్ చేయబడింది), కేవలం 443 లేదా కేవలం SSH మాత్రమే అనుమతించే ufw రూల్‌సెట్, DNS ఇంకా మునుపటి సర్వర్‌ను సూచిస్తూ ఉండటం, లేదా పాత-AAAA సమస్య — వారి సర్వర్లు IPv6 ప్రయత్నించాయి, మీది కేవలం IPv4 మీదే స్పందిస్తుంది. VPS బయట నుండి పరీక్షించండి: మీ ల్యాప్‌టాప్ నుండి curl -I http://example.com వారి వాలిడేటర్ చూసేది పునరుత్పత్తి చేస్తుంది.

మీరు ప్రయత్నాలు చేస్తూ రేట్ లిమిట్‌లోకి వెళ్లారు.

Error creating new order :: too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limits/

Let's Encrypt ప్రతి హోస్ట్‌నేమ్‌కి, ప్రతి అకౌంట్‌కి, గంటకు 5 విఫల వాలిడేషన్‌లను అనుమతిస్తుంది — వారి 2025 రేట్-లిమిట్ రీవర్క్ నుండి ఇది రీఫిల్ అయ్యే బకెట్, ప్రతి 12 నిమిషాలకు దాదాపు ఒక రీట్రై తిరిగి సంపాదిస్తుంది — మరియు పాడైన ఫైర్‌వాల్‌పై రీట్రై హమ్మర్ చేయడం దాన్ని త్వరగా ఖర్చు చేసేస్తుంది. వేచి ఉండటం పని చేస్తుంది, కానీ నిజమైన పరిష్కారం ప్రవర్తనాపరమైనది: ఏ వైఫల్యం తర్వాతనైనా, విజయవంతం అయ్యే వరకు స్టేజింగ్ ఎన్విరాన్మెంట్‌తో డీబగ్ చేయండి.

sudo certbot certonly --apache --dry-run -d example.com -d www.example.com

certonly గమనించండి: --dry-run కేవలం certonly మరియు renew సబ్‌కమాండ్‌లచే అంగీకరించబడుతుంది, మరియు బేర్ certbot --apache --dry-run రూపం అసలు నడవడానికి నిరాకరిస్తుంది, మీకు --dry-run currently only works with the 'certonly' or 'renew' subcommands అని చెబుతుంది. డ్రై రన్ స్టేజింగ్‌తో వాలిడేట్ చేస్తుంది, దానికి దాని స్వంత ఉదారమైన లిమిట్‌లు ఉంటాయి మరియు నిజమైన సర్టిఫికెట్‌లను ఇవ్వదు, కాబట్టి మీరు అక్కడ రోజంతా విఫలం కావచ్చు. స్టేజింగ్ పాస్ అయిన తర్వాత మాత్రమే నిజమైన కమాండ్ మళ్లీ నడపండి. ఇతర లిమిట్‌లు — ప్రతి రిజిస్టర్డ్ డొమైన్‌కి వారానికి 50 సర్టిఫికెట్‌లు, వారానికి ఒకే పేరు సెట్‌కి 5 డూప్లికేట్‌లు — స్క్రిప్ట్ లూప్‌లో రీఇష్యూ చేస్తుంటే తప్ప మీరు కలుస్తే తప్ప.

HTTPS ఒకసారి పని చేయడం ప్రారంభించిన తర్వాత, సర్టిఫికేట్ ట్రాన్స్‌పోర్ట్‌ని సురక్షితం చేస్తుంది గానీ సర్వర్‌ని కాదని గుర్తుంచుకోండి: port 22 రోజంతా పాస్‌వర్డ్ అంచనాలను ఇంకా స్వీకరిస్తూనే ఉంటుంది. దీన్ని Ubuntu 24.04పై Fail2banతో జతపరచడం తర్వాత సహజమైన ముప్పై నిమిషాలు.

FAQ

Ubuntu 24.04 పై Apache కోసం నేను Certbot ను snap తో వేయాలా లేక apt తో వేయాలా?

apt వాడండి. Ubuntu 24.04 లో Certbot 2.9.0 అందుబాటులో ఉంది. అది ఈ గైడ్ లోని ప్రతిదానికీ సరిపోతుంది. unattended-upgrades ద్వారా భద్రతా ప్యాచ్‌లు అందుతాయి. snapd అవసరం లేదు. మీకు కొత్త వెర్షన్ వెంటనే కావాలంటే లేదా కేవలం snap గానే దొరికే DNS ప్లగిన్ కావాలంటే మాత్రమే snap ఎంచుకోండి. మీరు మారితే, ఇద్దరు రెన్యూవల్ షెడ్యూలర్లు ఏకకాలంలో నడిచేలా కాకుండా ముందుగా apt remove certbot python3-certbot-apache చేయండి.

Certbot "Unable to find a virtual host listening on port 80" అని ఎందుకు చెబుతుంది?

ఎందుకంటే మీరు -d తో ఇచ్చిన డొమైన్‌తో సరిపోలే ServerName లేదా ServerAlias పోర్ట్ 80 పై ఎనేబుల్ అయిన vhost లేదు. Ubuntu డిఫాల్ట్ vhost లో ServerName కామెంట్ చేయబడి ఉంటుంది. sudo apache2ctl -S నడపండి. ఆ పేరును కలిగి ఉండే vhost ను కనుగొనండి లేదా సృష్టించండి. ServerName example.com జోడించండి. Apache ను రీలోడ్ చేయండి. తర్వాత Certbot ను మళ్లీ నడపండి.

"Timeout during connect (likely firewall problem)" ను నేను ఎలా పరిష్కరించాలి?

Let's Encrypt మీ DNS ప్రచురించే చిరునామా వద్ద పోర్ట్ 80 చేరుకోలేకపోయింది. మీ ప్రొవైడర్ యొక్క ప్యానెల్-స్థాయి నెట్‌వర్క్ ఫైర్‌వాల్ మరియు ufw రెండింటినీ తనిఖీ చేయండి. dig +short example.com ఈ VPS ని మాత్రమే చూపుతుందని నిర్ధారించుకోండి. పాడైన ఏవైనా AAAA రికార్డులను తొలగించండి లేదా సరిదిద్దండి. AAAA రికార్డు ఉన్నప్పుడు వాలిడేషన్ IPv6 ను ప్రాధాన్యత ఇస్తుంది. సర్వర్ బయట నుండి curl -I http://example.com తో పరిష్కారాన్ని నిర్ధారించుకోండి. వాస్తవ జారీకి ముందు sudo certbot certonly --apache --dry-run -d example.com తో రిహార్స్ చేయండి.

Ubuntu 24.04 పై Certbot సర్టిఫికెట్‌లను స్వయంచాలకంగా రెన్యూ చేస్తుందా?

అవును. apt ప్యాకేజీ certbot.timer ను ఇన్‌స్టాల్ చేస్తుంది. అది రోజుకు రెండుసార్లు నడిచే systemd టైమర్. గడువు ముగిసే 30 రోజుల లోపల ఉన్న ఏ సర్టిఫికెట్ నైనా రెన్యూ చేస్తుంది. తర్వాత Apache ను రీలోడ్ చేస్తుంది. snap అదే పనికి snap.certbot.renew.timer ను వాడుతుంది. systemctl list-timers certbot.timer తో ధ్రువీకరించండి. sudo certbot renew --dry-run తో రిహార్స్ చేయండి. దానిపై మీ స్వంత cron జాబ్ జోడించవద్దు.

Certbot మరియు Apache తో నేను వైల్డ్‌కార్డ్ సర్టిఫికెట్ ఎలా పొందాలి?

వైల్డ్‌కార్డ్‌లకు DNS-01 ఛాలెంజ్ అవసరం. Certbot తప్పనిసరిగా _acme-challenge.example.com వద్ద TXT రికార్డు ఉంచాలి. దీనర్థం మీ DNS ప్రొవైడర్ కోసం API ఆధారాలతో certbot-dns-* ప్లగిన్ అవసరం (--manual ప్రత్యామ్నాయానికి ప్రతి రెన్యూవల్ వద్ద మాన్యువల్‌గా సవరించిన TXT రికార్డులు అవసరం). మీకు కేవలం కొన్ని తెలిసిన సబ్‌డొమైన్‌లు మాత్రమే ఉంటే, వాటిని స్పష్టంగా పేర్కొనే SAN సర్టిఫికెట్ సులభం. అది DNS API కీలను సర్వర్ నుండి దూరంగా ఉంచుతుంది.