Skip to main content

安裝設定Let's Encrypt (Apache2)

系統環境 :
    OS: Debian GNU/Linux 12 (bookworm) x86_64
    Host: PRO ADL-U Cubi 5 (MS-B0A8) 1.0
    Kernel: 6.8.4-3-pve
    Uptime: 5 hours, 52 mins
    Packages: 556 (dpkg)
    Shell: bash 5.2.15
    Terminal: /dev/pts/3
    CPU: 12th Gen Intel i7-1255U (4) @ 4.700GHz
    Memory: 241MiB / 4096MiB
    Apache2

1. 請先設定好DNS對應,使外部DNS可連線到該站台,並安裝必要元件

    apt-get update
    apt-get install certbot python3-certbot-apache -y

2. 顯示Certbot參數

certbot -h

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...

Certbot can obtain and install HTTPS/TLS/SSL certificates.  By default,
it will attempt to use a webserver both for obtaining and installing the
certificate. The most common SUBCOMMANDS and flags are:

obtain, install, and renew certificates:
    (default) run   Obtain & install a certificate in your current webserver
    certonly        Obtain or renew a certificate, but do not install it
    renew           Renew all previously obtained certificates that are near
expiry
    enhance         Add security enhancements to your existing configuration
   -d DOMAINS       Comma-separated list of domains to obtain a certificate for

  --apache          Use the Apache plugin for authentication & installation
  --standalone      Run a standalone webserver for authentication
  (the certbot nginx plugin is not installed)
  --webroot         Place files in a server's webroot folder for authentication
  --manual          Obtain certificates interactively, or using shell script
hooks

   -n               Run non-interactively
  --test-cert       Obtain a test certificate from a staging server
  --dry-run         Test "renew" or "certonly" without saving any certificates
to disk

manage certificates:
    certificates    Display information about certificates you have from Certbot
    revoke          Revoke a certificate (supply --cert-name or --cert-path)
    delete          Delete a certificate (supply --cert-name)

manage your account:
    register        Create an ACME account
    unregister      Deactivate an ACME account
    update_account  Update an ACME account
    show_account    Display account details
  --agree-tos       Agree to the ACME server's Subscriber Agreement
   -m EMAIL         Email address for important account notifications

More detailed help:

  -h, --help [TOPIC]    print this message, or detailed help on a topic;
                        the available TOPICS are:

   all, automation, commands, paths, security, testing, or any of the
   subcommands or plugins (certonly, renew, install, register, nginx,
   apache, standalone, webroot, etc.)
  -h all                print a detailed help page including all topics
  --version             print the version number
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

3. 申請憑證

certbot certonly --apache -w /var/www/xxxxxx/ -d xx.aa.bb.cc --email [email protected]

4. 確認憑證

  申請完成之後,應該會在 /etc/letsencrypt/live/xx.aa.bb.cc 中找到憑證入如下

lrwxrwxrwx 1 root root  43 Jun  7 22:53 cert.pem -> ../../archive/xx.aa.bb.cc/cert1.pem
lrwxrwxrwx 1 root root  44 Jun  7 22:53 chain.pem -> ../../archive/xx.aa.bb.cc/chain1.pem
lrwxrwxrwx 1 root root  48 Jun  7 22:53 fullchain.pem -> ../../archive/xx.aa.bb.cc/fullchain1.pem
lrwxrwxrwx 1 root root  46 Jun  7 22:53 privkey.pem -> ../../archive/xx.aa.bb.cc/privkey1.pem


5. Apache2 conf放上憑證    

vim /etc/apache2/sites-availible/xxxxxx.conf

<VirtualHost *:443>
        SSLEngine on
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/xxxxxx
        SSLCertificateFile /etc/letsencrypt/live/xx.aa.bb.cc/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/xx.aa.bb.cc/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/xx.aa.bb.cc/chain.pem
</VirtualHost>

存檔之後 Restart Apache Service

systemctl restart apache2

6. 檢查SSL設定是否正確

圖片.png

7. 確認 certbot.timer 執行正常、Certificates renew正常

systemctl status certbot.timer

* certbot.timer - Run certbot twice daily
     Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; preset: enabled)
     Active: active (waiting) since Fri 2024-06-07 17:37:05 CST; 6h ago
    Trigger: Sat 2024-06-08 08:04:10 CST; 8h left
   Triggers: * certbot.service

Jun 07 17:37:05 systemd[1]: Started certbot.timer - Run certbot twice daily.

certbot renew --dry-run

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/xx.aa.bb.cc.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for xx.aa.bb.cc

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/mdfk.goddamn.idv.tw/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -