Please enable java script to visit.
NOTEBOOK
HOMEPHP / MySQLJS / HTMLWXappPythonC++Blender其他
ubuntu 从 Let’s Encrypt 获得 https 证书 - NOTEBOOK
ubuntu 从 Let’s Encrypt 获得 https 证书
其他
Posted on 2023-12-11
摘要 : ubuntu 20.04 版本
需要先设置好 80 端口的站点指向(/etc/apache2/sites-available/000-default.conf)
❱ 先设置好 80 端口的站点指向

sudo nano /etc/apache2/sites-available/000-default.conf

添加一下代码,修改正确网址:
<VirtualHost *:80>
ServerName YOURWEBSITE.com
ServerAlias www.YOURWEBSITE.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/YOURWEBSITE_PATH
</VirtualHost>

如果希望 http 自动跳转到 https,可以修改为:
<VirtualHost *:80>
ServerName YOURWEBSITE.com
ServerAlias www.YOURWEBSITE
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/YOURWEBSITE_PATH
RewriteEngine on
RewriteCond %{SERVER_NAME} =YOURWEBSITE.com [OR]
RewriteCond %{SERVER_NAME} =www.YOURWEBSITE.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>


❱ 启动三个模块

sudo a2enmod http2
sudo a2enmod ssl
sudo a2enmod rewrite // 这样才能让 http自动切换成 https


❱ 重启 Apache

看看设置有没有问题
sudo service apache2 restart
sudo systemctl status apache2.service // 查看 apache2 的状态


❱ 开始从 Let’s Encrypt 获得证书

参考:https://certbot.eff.org/lets-encrypt/ubuntufocal-apache

❱ ubuntu 20.04 已经有 snap了,所以直接用 snap 来安装

sudo snap install core; sudo snap refresh core


❱ 安装 certbot机器人

sudo snap install --classic certbot


❱ 生成证书后,手动配置

sudo certbot certonly --apache

期间会要求输入邮箱、询问是否同意(同意),选择部分(或全部)站点域名,等待即可。

❱ 手动配置default-ssl.conf 并启用

sudo nano /etc/apache2/sites-available/default-ssl.conf

添加:
<ifModule mod_ssl.c>
<VirtualHost *:443>
ServerName YOURWEBSITE.com
ServerAlias www.YOURWEBSITE.com

SSLEngine on
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/YOURWEBSITE_PATH

# Include /etc/letsencrypt/options-ssl-apache.conf

SSLCertificateFile /etc/letsencrypt/live/YOURWEBSITE.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/YOURWEBSITE.com/privkey.pem
</VirtualHost>
</ifModule>


❱ 把default-ssl.conf 启用 (不启用 a2dissite)

sudo a2ensite default-ssl


❱ 查看自动更新是否成功

sudo certbot renew --dry-run


❱ 重启 Apache

看看设置有没有问题
sudo service apache2 restart
sudo systemctl status apache2.service // 查看 apache2 的状态


❱ 其他命令

// 证书更新命令 ,一般不需要,因为有定时更新了
sudo certbot renew

// 强制更新
sudo certbot renew --force-renew

// 单独申请证书。(可以额外申请)
sudo certbot certonly

// 单独删除某个证书。(一个服务器可以有多个证书)
sudo certbot delete


❱ 安装证书后apache出错退出的解决办法

创建以下文件:
sudo nano /etc/apache2/conf-available/mutex-file.conf

添加一下内容在新创建的文件中
Mutex file:${APACHE_LOCK_DIR} default

保存文件后,再执行:
sudo a2enconf mutex-file // 启用新的配置文件
sudo systemctl restart apache2 //重新启动 Apache