SSD Nodes Learn
கல்வி வழிகாட்டிகள் Matt Connorஆல் Matt Connor · புதுப்பிக்கப்பட்டது 2026-07-25

Ubuntu 24.04 Apache Certbot install செய்வது எப்படி

Ubuntu 24.04 இல் Apache க்கு இலவச Let's Encrypt சான்றிதழ் ஒரே ஒரு கட்டளையில். snap தேவையில்லை: apt மூலம் Certbot 2.9.0 கிடைக்கிறது. ServerName பிழை தடுப்பதையும் விளக்குகிறது.

நீங்கள் உருவாக்குவது என்ன

Ubuntu 24.04 இல் HTTPS இணைப்பில் பதிலளிக்கும் ஒரு Apache தளம். இதற்கு இலவச, உலாவியால் நம்பப்படும் Let's Encrypt சான்றிதழ் தேவை. இந்தச் சான்றிதழை Certbot வழங்கும். நீங்கள் மீண்டும் சிந்திக்காத ஒரு systemd timer இதை தானாகவே புதுப்பிக்கும். இந்த வேலையைச் செய்யும் கட்டளை ஒரே ஒரு வரிதான். அந்த வரிக்கு முன்னால்தான் எல்லாப் பிழைகளும் நிகழ்கின்றன: ServerName இல்லாத ஒரு vhost, provider firewall இல் மூடப்பட்ட port 80, பழைய சேவையகத்தை நோக்கியே இருக்கும் DNS. எனவே இந்த வழிகாட்டி பெரும்பாலும் முன்நிபந்தனைகளில் கவனம் செலுத்துகிறது. ஒவ்வொரு தவறும் அச்சிடும் சரியான பிழைச் சரத்தையும் இது குறிப்பிடுகிறது.

இரண்டு வரம்புக் குறிப்புகள். உங்கள் வலை சேவையகம் nginx என்றால், செயல்முறை ஒரே வடிவத்தில் இருக்கும். ஆனால் plugin மற்றும் கட்டமைப்புகள் வேறுபடும். எனவே அதற்குப் பதிலாக இந்த வழிகாட்டியின் nginx பதிப்பைப் பயன்படுத்தவும். நீங்கள் பாதுகாக்கும் தளம் உள்ளகப் பயன்பாட்டுக்கு மட்டுமே என்றால் — தனியார் முகவரியில் உள்ள ஒரு admin panel, வேறு யாரும் அணுகாத ஒரு staging சேவையகம் — உங்களுக்குச் சான்றிதழ் ஆணையமே தேவையில்லை. ஒரு self-signed சான்றிதழ் குறைவான இயந்திரப் பாகங்களைக் கொண்டிருக்கும். இணைய இணைப்பு இல்லாமலேயே இது வேலை செய்யும்.

முன்தேவைகள், மற்றும் Certbot இயங்குவதற்கு முன்பே இது தோல்வியடையும் மூன்று வழிகள்

  • Apache ஏற்கனவே உங்கள் தளத்தை plain HTTP வழியாக வழங்கிக்கொண்டிருக்க வேண்டும். Certbot இன் Apache plugin இருக்கும் தளத்தைத் திருத்துகிறது; அது புதியதாக ஒன்றை உருவாக்காது. நீங்கள் வெற்று VPS உடன் தொடங்குகிறீர்கள் என்றால், முதலில் Ubuntu 24.04 இல் LAMP stack கட்டமைத்துவிட்டு இங்கே திரும்புங்கள் — இந்த வழிகாட்டி அதன் விடுபட்ட TLS அத்தியாயமாகும்.
  • உங்கள் VPS முகவரியில் A record உடன் கூடிய பொது domain ஒன்று வேண்டும். Let's Encrypt இன் HTTP-01 challenge என்பது அவர்களின் validation server கள் இணையத்திலிருந்து உங்கள் சர்வருக்கு இணைகின்றன என்பதாகும்: port forward இல்லாத NATed homelab வேண்டாம், .local பெயர்கள் வேண்டாம், வெற்று IP கள் வேண்டாம். dig +short example.com உங்கள் VPS முகவரியைத் திருப்பித் தர வேண்டும், மேலும் கடந்த ஒரு மணிநேரத்திற்குள் DNS ஐ மாற்றியிருந்தால், certificate வழங்குவதற்கு முன் பழைய record இன் TTL காலத்தைக் காத்திருங்கள்.
  • AAAA record இருந்தால், அது சரியாக இருக்க வேண்டும். AAAA record வெளியிடப்பட்டால் Let's Encrypt IPv6 ஐ விரும்புகிறது, எனவே பழைய AAAA record validation ஐத் தோல்வியடையச் செய்கிறது; அதே சமயம் உங்கள் laptop இலிருந்து curl — பெரும்பாலும் IPv4 வழியாக — சரியாக வேலை செய்கிறது. சரியான AAAA ஐ வெளியிடுங்கள், அல்லது எதையும் வெளியிடாதீர்கள்.

Port 80 மற்றும் 443 ufw இலும் மற்றும் உங்கள் provider இன் network firewall இலும் திறந்திருக்க வேண்டும் — பெரும்பாலான hosting panel களில் OS பார்க்காத இரண்டாவது ஒரு firewall இருக்கும். HTTP-01 குறிப்பாக port 80 வழியாக validation செய்கிறது; இதை நீங்கள் 443 மட்டும் என இயக்க முடியாது.

sudo ufw allow "Apache Full"
sudo ufw status

இவை அனைத்தும் இருந்தால் முழு வேலையும் பதினைந்து நிமிடம், அதில் பத்தும் வாசிப்பதற்கே.

Snap அல்லது apt Certbot? 24.04-இல், apt இப்போது ஏற்றது

பல வருடங்களுக்கு முன்பு Certbot snap விநியோதத்திற்கு மாறியது; காரணம், distro தொகுப்புகள் காலப்போக்கில் பழையவையாக மாறின. Ubuntu 20.04 Certbot 0.40-ஐ வழங்கியது; பின்னர் அதை ஒருபோதும் புதுப்பிக்கவில்லை. ஐந்து வருடம் பழைய பிழைகளை திருத்துவதில் அந்தத் திட்டம் சலித்துப்போனது. 24.04-இல் அந்தக் காரணம் இல்லை — archive தற்போதைய தலைமுறை வெளியீடான Certbot 2.9.0-ஐ வழங்குகிறது, மேலும் unattended-upgrades அதை தொடர்ந்து புதுப்பித்து வருகிறது. இந்த OS-க்கு எனது பரிந்துரை: apt-ஐப் பயன்படுத்தவும். இதனால் snapd daemon-ஐ நீங்கள் தவிர்க்கிறீர்கள், Apache plugin ஒரே transaction-இல் நிறுவப்படுகிறது, மேலும் renewal timer வழக்கமான Debian முறையில் systemd-உடன் ஒருங்கிணைகிறது.

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

சரியான முடிவு: certbot 2.9.0. python3-certbot-apache தொகுப்பு உங்கள் Apache config-களை வாசித்து திருத்தும் plugin ஆகும் — இது இல்லாவிட்டால், certbot --apache பணிசெயல் The requested apache plugin does not appear to be installed காரணமாக தோல்வியடைகிறது.

இரண்டு நிலைகளில் snap இன்றும் சரியான தேர்வு: புதிய Certbot வெளியிடப்படும் அன்றே அதை நீங்கள் பெற விரும்பினால், அல்லது snap-ஆக மட்டுமே விநியோதிக்கப்படும் DNS plugin உங்களுக்குத் தேவைப்பட்டால் (certbot-dns-* provider plugin-களில் பல அவ்வாறு உள்ளன). அந்த வழியைத் தேர்ந்தெடுத்தால்:

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

எதைத் தேர்ந்தெடுத்தாலும், இரண்டையும் ஒருபோதும் இயக்க வேண்டாம். இரண்டு நிறுவல்கள் என்பது /etc/letsencrypt-ஐ கட்டுப்படுத்த இரண்டு renewal scheduler-கள் போட்டியிடுவதை குறிக்கிறது. மேலும், உங்கள் shell PATH-இல் கண்டுபிடிக்கும் certbot உங்கள் சான்றிதழ்களை வைத்திருப்பது அல்ல. மேலே உள்ள apt remove வரி விரும்பினால் சேர்க்கப்பட்ட அலங்காரம் அல்ல.

Certbot திருத்தும் vhost முன்பே இருக்க வேண்டும் — ServerName தான் முக்கியமானது

certbot --apache எப்படி வேலை செய்கிறது என்றால், நீங்கள் கொடுக்கும் ஒவ்வொரு -d domain-உடனும் பொருந்தும் ServerName அல்லது ServerAlias கொண்ட port-80 virtual host-ஐக் கண்டுபிடிக்கிறது. பிறகு அதன் மூலம் அந்த domain-ன் கட்டுப்பாட்டை நிரூபிக்கிறது. பிறகு அந்த vhost-க்கு ஒரு SSL இரட்டையை எழுதுகிறது. பொருந்தும் ServerName இல்லை என்றால், எதுவும் பொருந்தாது. Ubuntu-வின் இயல்புநிலை 000-default.conf-ல் ServerName கருத்தில் எடுக்கப்பட்டிருக்கும். இந்த ஒரு கருத்தில் எடுக்கப்பட்ட வரி தான் இந்த வழிகாட்டியின் ஒற்றைப் பெரிய command தோல்வியடைவதற்கு மிகப் பொதுவான காரணம்.

எனவே Certbot-ஐத் தொடுவதற்கு முன், இந்த தளத்திற்கு ஒரு சரியான name-based 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-enabled symlink-ஐ அறிவிக்கிறது, நீங்கள் sites-available-ல் திருத்திய கோப்பை அல்ல. 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 தொகுதியைச் சேர்த்தது, இது அனைத்தையும் HTTPS ஆக 301 திருப்பிவிடுகிறது. உங்கள் அசல் vhost கோப்பு மாற்றப்படாமல் திருத்தப்பட்டது, மேலும் SSL இரட்டை அதன் அருகிலேயே இருக்கிறது, அங்கு நீங்கள் அது சேர்த்த ஒவ்வொரு வரியையும் படிக்க முடியும்.

சான்றிதழ் உண்மையில் எங்கே உள்ளது, மற்றும் நீங்கள் அதை ஏன் ஒருபோதும் நகலெடுக்கக் கூடாது

அனைத்தும் /etc/letsencrypt/live/example.com/ கீழ் சேமிக்கப்படுகின்றன: fullchain.pem (சான்றிதழ் மற்றும் intermediate chain — சேவையகங்கள் இதை நோக்கி அமைக்கப்பட வேண்டும்), privkey.pem (தனிப்பட்ட திறவுகோல், root மட்டுமே படிக்கக்கூடியது), மேலும் தனித்தனியாக இந்த பாகங்களை எதிர்பார்க்கும் மென்பொருளுக்காக cert.pem மற்றும் chain.pem. இவை அனைத்தும் /etc/letsencrypt/archive/ க்குள் உள்ள symlinks ஆகும். இந்த மறைமுக இணைப்பே புதுப்பித்தல் பொறிமுறையாகும்: புதுப்பித்தல் புதிய கோப்புகளை archive/ க்குள் எழுதி, symlinks ஐ மறுசீரமைக்கிறது. வேறு எந்த மென்பொருளையும் live/ பாதைகளை நோக்கி அமைத்தால், அது புதுப்பித்தல்களை தானாகவே பெற்றுக்கொள்ளும்; கோப்புகளை வேறிடத்திற்கு நகலெடுத்தால், 90 நாட்களில் சேவை தடையை நீங்களே உருவாக்கிக்கொள்வீர்கள்.

அறிந்துகொள்ள வேண்டிய மற்றொரு கோப்பு /etc/letsencrypt/renewal/example.com.conf ஆகும். இந்த சான்றிதழ் எவ்வாறு வழங்கப்பட்டது என்பதை இது பதிவுசெய்கிறது — authenticator = apache, installer = apache, டொமைன்கள் — எனவே Apache ஐ பின்னர் மீளேற்றம் செய்வது உட்பட, புதுப்பித்தல் கண்காணிப்பின்றி இந்த செயல்முறையை மீண்டும் செய்ய முடியும்.

புதுப்பித்தல் ஏற்கனவே திட்டமிடப்பட்டுள்ளது — அதைச் சரிபார்க்கவும், உருவாக்க வேண்டாம்

Let's Encrypt சான்றிதழ்கள் வடிவமைப்பின்படி 90 நாட்கள் வரை செல்லுபடியாகும். நிறுவப்பட்ட apt தொகுப்பு ஏற்கனவே இயங்குதளத்தை உருவாக்கியுள்ளது: ஒரு systemd timer நாளில் இருமுறை சீரற்ற நேரங்களில் Certbot-ஐ இயக்குகிறது. காலாவதியாகும் முன் 30 நாட்களுக்குள் உள்ள எந்தச் சான்றிதழையும் இது புதுப்பிக்கிறது. இதற்கு மேலாக cron job சேர்க்க வேண்டாம்; இரண்டாவது scheduler பயனளிக்காது. அது பதிவு ஒலியையும் rate-limit ஆபத்தையும் மட்டுமே அதிகரிக்கும்.

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

முதல் command timer இயங்குவதைக் காட்டுகிறது. அதில் NEXT நேரம் வரும் 24 மணிநேரத்திற்குள் இருக்கும் — இந்தத் திட்டம் நாளொன்றுக்கு இருமுறை சீரற்ற தாமதத்துடன் அமைகிறது. எனவே சரியான நேரம் வெளிப்படையாகத் தெரியாது (snap நிறுவலில், timer ஆனது snap.certbot.renew.timer ஆக இருக்கும்). dry run ஆனது Let's Encrypt-ன் staging சூழலுக்கு எதிராக முழுமையான புதுப்பித்தல் ஒத்திகையை நடத்துகிறது — இது உண்மையான challenge ஆகும், ஆனால் சான்றிதழ் வழங்கப்படாது, rate-limit செலவும் ஏற்படாது. சரியான முடிவு இத்துடன் முடிவடையும்:

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

dry run தோல்வியடைந்தால், ~60 நாட்களில் நடக்கும் உண்மையான புதுப்பித்தலும் அதேபோலத் தோல்வியடையும் — எனவே தற்போதைய சான்றிதழ் முழுமையாகச் செல்லுபடியாகும் நிலையில் இருக்கும்போதே இதை இப்போது சரிசெய்யவும். வழக்கமான காரணம்: சான்றிதழ் வழங்கிய பிறகு சேர்க்கப்பட்ட firewall rule மீண்டும் 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/ header ஐயும் திருப்பித் தர வேண்டும் — இதுதான் Certbot நிறுவிய redirect. இரண்டாவது கட்டளை HTTP/1.1 200 OK ஐத் திருப்பித் தர வேண்டும்; curl இருந்து எந்த TLS புகாரும் இருக்கக் கூடாது. மூன்றாவது கட்டளை issuer ஐ அச்சிடும் — ஒரு O = Let's Encrypt வரி, அதில் R12 அல்லது E7 போன்ற சுருக்கமான CN இருக்கும் — மேலும் notAfter தோராயமாக 90 நாட்களில் முடியும். உலாவியில் நீங்கள் பேட்லாக்கைப் பெறுவீர்கள்; அதனைச் சொடுக்கினால் அதே issuer காட்டப்படும். curl சரியாக வேலை செய்து, உலாவி எச்சரிக்கை காட்டினால், அது சான்றிதழ் பிரச்சினை அல்ல; நீங்கள் பார்ப்பது காச் செய்யப்பட்ட பக்கம் அல்லது தவறான hostname என்பதே காரணம்.

பல தளங்கள்: ஒரே 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 வழங்க முடியாது — ஒரு web server-ல் கோப்பை வைப்பது ஒரு hostname-ஐ மட்டுமே கட்டுப்பாட்டை நிரூபிக்கும், முழு namespace-ஐ அல்ல. ஒருங்கிணைந்த சான்றிதழ்களுக்கு DNS-01 சவால் தேவை: Certbot ஆனது _acme-challenge.example.com-ல் ஒரு TXT record-ஐ அமைக்கிறது. நடைமுறையில், இது உங்கள் DNS provider-க்கான API credentials உடன் ஒரு certbot-dns-* plugin-ஐப் பயன்படுத்துவதைக் குறிக்கிறது. அல்லது, ஒவ்வொரு புதுப்பித்தலின்போதும் --manual மூலம் TXT records-ஐ கைமுறையாகத் திருத்துவதைக் குறிக்கிறது (இது சிரமமானது — இதற்காகத் திட்டமிட வேண்டாம்). TXT record இயக்கமுறை முதல் கண்காணிப்பின்றி புதுப்பிக்கும் plugin வரையிலான முழு விளக்கம் DNS-01 மூலம் Certbot-உடன் ஒருங்கிணைந்த சான்றிதழ்கள்-ல் உள்ளது. நேர்மையான ஆலோசனை: உங்களுக்கு நான்கு அறியப்பட்ட subdomains இருந்தால், நான்கையும் பட்டியலிடும் ஒரு SAN சான்றிதழ் ஒருங்கிணைந்த சான்றிதழை விட எளிதானது. மேலும் இதற்கு server-ல் DNS API keys தேவையில்லை.

பிழை நிலைகள், நீங்கள் காணும் சரங்களுடன்

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)

உங்கள் DNS அறிவிக்கும் முகவரியில் port 80 க்கு Let's Encrypt ஒரு 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 நிமிடங்களுக்கு ஒரு மறுமுயற்சி மீண்டும் கிடைக்கிறது. செயலிழந்த ஃபயர்வாலுக்கு எதிராக தொடர்ந்து மறுமுயற்சி செய்வது இந்த வரம்பை விரைவாகத் தீர்த்துவிடும். காத்திருப்பது வேலை செய்யும். ஆனால் உண்மையான தீர்வு நடத்தை சார்ந்தது: எந்தப் பிழைக்கும் பிறகு, வெற்றி பெறும் வரை staging சூழலில் பிழையறிதல் செய்யவும்.

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

certonly ஐக் கவனிக்கவும்: --dry-runcertonly மற்றும் renew துணைக் கட்டளைகள் மட்டுமே ஏற்றுக்கொள்கின்றன. வெற்று certbot --apache --dry-run வடிவம் எந்தக் காரணத்திற்காகவும் இயங்க மறுக்கிறது, உங்களுக்கு --dry-run currently only works with the 'certonly' or 'renew' subcommands எனத் தெரிவிக்கிறது. dry run staging உடன் சரிபார்க்கிறது. அதற்கு தனித்த தாராளமான வரம்புகள் உள்ளன. நிஜச் சான்றிதழ்களை வழங்காது. எனவே அங்கே நீங்கள் நாள் முழுவதும் தோல்வியடையலாம். staging வெற்றி பெற்ற பிறகு மட்டுமே உண்மையான கட்டளையை மீண்டும் இயக்கவும். மற்ற வரம்புகள் — ஒரு பதிவுசெய்யப்பட்ட டொமைனுக்கு ஒரு வாரத்திற்கு 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 plugin கடைசியாக snap-ஆக மட்டுமே வழங்கப்பட்டால் தேர்ந்தெடுக்கவும். நீங்கள் மாறினால், முதலில் apt remove certbot python3-certbot-apache செய்யவும். இல்லையென்றால் இரண்டு renewal scheduler-கள் ஒரே நேரத்தில் இயங்கும்.

Certbot "Unable to find a virtual host listening on port 80" என்று ஏன் கூறுகிறது?

ஏனெனில் port 80 vhost-இல் ServerName அல்லது ServerAlias இல்லை. இது -d உடன் கொடுத்த domain-உடன் பொருந்தவில்லை. Ubuntu-வின் இயல்புநிலை vhost-இல் ServerName கருத்தில் எடுக்கப்பட்டிருக்கும். sudo apache2ctl -S இயக்கவும். அந்த பெயருக்கு சொந்தமான vhost-ஐ கண்டுபிடிக்கவும் அல்லது உருவாக்கவும். ServerName example.com சேர்க்கவும். Apache-ஐ மீளேற்றவும். பிறகு Certbot-ஐ மீண்டும் இயக்கவும்.

"Timeout during connect (likely firewall problem)"-ஐ எப்படி சரிசெய்வது?

உங்கள் DNS வெளியிடும் முகவரியில் Let's Encrypt port 80-ஐ அடைய முடியவில்லை. உங்கள் provider-ன் panel-ல் உள்ள network firewall-ஐ சரிபார்க்கவும். ufw-ஐயும் சரிபார்க்கவும். dig +short example.com இந்த VPS-ஐ மட்டுமே திருப்பி அனுப்புகிறதா என்று உறுதி செய்யவும். பழைய AAAA record இருந்தால் அதை நீக்கவும் அல்லது சரிசெய்யவும். AAAA record இருந்தால் validation IPv6-ஐ விரும்பும். சரிசெய்த பிறகு சேவையகத்திற்கு வெளியில் இருந்து curl -I http://example.com உடன் உறுதி செய்யவும். உண்மையான வழங்கலுக்கு முன் sudo certbot certonly --apache --dry-run -d example.com உடன் ஒத்திகை பார்க்கவும்.

Ubuntu 24.04-இல் Certbot சான்றிதழ்களை தானாகவே புதுப்பிக்கிறதா?

ஆம். apt தொகுப்பு certbot.timer நிறுவுகிறது. இது ஒரு systemd timer. இது நாளுக்கு இருமுறை இயங்குகிறது. 30 நாட்களுக்குள் காலாவதியாகும் சான்றிதழ்களை புதுப்பிக்கிறது. பிறகு Apache-ஐ மீளேற்றுகிறது. snap snap.certbot.renew.timer பயன்படுத்துகிறது. systemctl list-timers certbot.timer உடன் சரிபார்க்கவும். sudo certbot renew --dry-run உடன் ஒத்திகை பார்க்கவும். இதற்கு மேல் உங்கள் சொந்த cron job சேர்க்க வேண்டாம்.

Certbot மற்றும் Apache உடன் wildcard சான்றிதழை எப்படி பெறுவது?

Wildcard-களுக்கு DNS-01 challenge தேவை. Certbot _acme-challenge.example.com-இல் ஒரு TXT record வைக்க வேண்டும். இதற்கு உங்கள் DNS provider-க்கான API credentials உடன் ஒரு certbot-dns-* plugin தேவை. --manual மாற்று ஒவ்வொரு renewal-லும் கைமுறையாக TXT record-ஐ திருத்த வேண்டும். உங்களிடம் சில subdomain-கள் மட்டுமே இருந்தால், அவற்றை வெளிப்படையாக பட்டியலிடும் SAN சான்றிதழ் எளிதானது. இது DNS API keys-ஐ சேவையகத்தில் இருந்து விலக்கி வைக்கிறது.