给网站添加https以提高安全性。

以下以debian+nginx为例,命令均建议以root用户或root权限运行。
首先需要安装依赖项socat和curl(如果不需要使用standalone模式,即已经安装有可以提供web服务的程序,则可以不安装socat):

apt-get install socat curl

获取acme.sh:

curl  https://get.acme.sh | sh

之后acme.sh 会安装到~/.acme.sh目录下。
如果未安装任何web服务,且没有其他程序占用80端口,则可以用standalone模式,acme.sh在获取证书时会临时占用80端口。获取ECC证书:

~/.acme.sh/acme.sh --issue -d 域名 --standalone -k ec-256

如果已安装了占用80端口的web服务,则可以指定网站的根目录(注意域名要与站点路径匹配),以下以nginx的默认路径(/var/www/html)为例:

~/.acme.sh/acme.sh --issue -d 域名 -w /var/www/html -k ec-256

接下来就可以创建证书存放路径并安装证书了,此处以将证书相关文件安装到/etc/web_https为例:

mkdir /etc/web_https/
~/.acme.sh/acme.sh --installcert -d 域名 --fullchainpath /etc/web_https/https.crt --keypath /etc/web_https/https.key --ecc

然后在nginx的网站配置文件中启用https。将SSL Configure的部分反注释,并添加证书地址:

    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    ssl_certificate    /etc/web_https/https.crt;
    ssl_certificate_key    /etc/web_https/https.key;
    ssl_protocols    TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers    HIGH:!aNULL:!MD5;
    server_name 域名;

之后重启web服务即可:

service nginx restart

也可以不停止nginx服务,重新加载配置:

service nginx force-reload

试访问任意网站下的任意文件,并将url头的http改成https,如果浏览器提示安全则表明证书和配置有效。

acme.sh会每60天自动更新证书,但如果采用standalone模式获取的证书,则renew时可能与正在运行的web服务冲突,如果需要更新时可以自行手动更新,在停用web服务后执行以下命令即可:

~/.acme.sh/acme.sh --renew -d 域名 --force --ecc

如果之前指定了网站的根目录,则renew的时候无需停止网站的服务程序。

如果长时间没有更新脚本,则可能脚本版本滞后而出现问题,acme.sh脚本自身带有了更新功能,执行以后会将脚本更新到最新版本。

~/.acme.sh/acme.sh --upgrade

标签: Linux

添加新评论