# Certbot - Install SSL ###### tags: `Ubuntu` `Technology` > **Date**:2024/02/21 > **Taker**:Sin ## Installation ### Install Snap ```bash sudo apt install snapd ``` ### Run the following commands to update Snap ```bash sudo snap install core sudo snap refresh core ``` ### Remove any existing Certbot packages to avoid possible conflicts ```bash sudo apt-get remove certbot ``` ### Install Certbot ```bash sudo snap install --classic certbot ``` ### Configure a symbolic link to the Certbot directory ```bash sudo ln -s /snap/bin/certbot /usr/bin/certbot ``` ## Usage ### Either get and install certificates ```bash sudo certbot --apache ``` ### Delete SSL Certificate ```bash sudo certbot delete --cert-name {domain} ``` ### Show the list of certificates ```bash sudo certbot certificates ``` ### Renew certificates ```bash sudo certbot renew --dry-run ``` ### Install certificates with wildcard domain ```bash sudo certbot certonly --apache --preferred-challenges=dns --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d '*.domain.com' ``` ### Install certificates with wildcard domain in China (Custom Nginx) #### Create a file named `authenticator.sh` in `/etc/letsencrypt/` ```bash sudo vim /etc/letsencrypt/authenticator.sh ``` ```bash #!/bin/bash # Authenticator hook script for certbot # This script should perform the necessary steps to authenticate domain ownership # and fulfill the challenge specified by Let's Encrypt. # Add your authentication logic here # Example: Output the DNS challenge information echo "DNS challenge information:" echo "Domain: _acme-challenge.${CERTBOT_DOMAIN}" echo "Token: ${CERTBOT_VALIDATION}" # After completing the authentication, you may need to propagate the changes or perform other tasks. ``` #### Set the file permissions ```bash sudo chmod +x /etc/letsencrypt/authenticator.sh ``` #### Run the following command to install the SSL certificate ```bash sudo certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /etc/letsencrypt/authenticator.sh --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d '*.domain.com' ```