在Nginx Web服务器上配置TLS/SSL

修改配置文件

# vi /etc/nginx/conf.d/ssl.www.onitroad.com.conf

添加ssl设置,参考如下:

## START: SSL/HTTPS www.onitroad.com ###
server {                                        
    listen 443 http2;
    server_name www.onitroad.com; 
    ssl on;
    ssl_certificate /etc/nginx/ssl/letsencrypt/www.onitroad.com/www.onitroad.com.cer;
    ssl_certificate_key /etc/nginx/ssl/letsencrypt/www.onitroad.com/www.onitroad.com.key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
    ssl_dhparam /etc/nginx/ssl/letsencrypt/www.onitroad.com/dhparams.pem;
    ssl_prefer_server_ciphers on;
 
    ## Improves TTFB by using a smaller SSL buffer than the nginx default
    ssl_buffer_size 8k;
 
    ## Enables OCSP stapling
    ssl_stapling on;
    resolver 8.8.8.8;
    ssl_stapling_verify on;
 
    ## Send header to tell the browser to prefer https to http traffic
    #add_header Strict-Transport-Security max-age=31536000;
 
    ## SSL logs ##
    access_log /var/log/nginx/www.onitroad.com_ssl_access.log;
    error_log /var/log/nginx/www.onitroad.com_ssl_error.log;
    #-------- END SSL config -------##
 
   root /var/www/localhost/htdocs;
   index         index.html index.htm index.php;
   server_name   www.onitroad.com;
   # configure php
   location ~ \.php$ {
              fastcgi_pass      127.0.0.1:9000;
              fastcgi_index     index.php;
              include           fastcgi.conf;
    }
    # rest of your config ##
}                                               
## END SSL www.onitroad.com ######

安装相关软件包

使用apk命令在Alpine Linux上安装以下命令

# apk add netcat-openbsd bc curl wget git bash openssl

同时还要安装libressl

# apk add libressl

如何升级acme.sh客户端?

执行以下命令升级acme.sh客户端

# acme.sh --upgrade

安装acme.sh客户端

使用git克隆acme.sh客户端

# cd /tmp/
# git clone https://github.com/Neilpang/acme.sh.git

安装acme.sh客户端:

# cd acme.sh/
# sudo -i
# ./acme.sh --install

重新登录 或者执行以下命令使别名生效:

# source ~/.bashrc

测试一下

# acme.sh

测试

使用浏览器打开https站点

https://www.onitroad.com

如何续订证书?

执行以下命令:

# acme.sh --renew -d www.onitroad.com

证书续订计划任务

crontab计划任务也会尝试为您续订证书。

# crontab -l

输出示例:

0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

生成全局dhparam文件

执行以下命令以创建全局dhparam文件:

# mkdir -p /etc/nginx/ssl/letsencrypt/www.onitroad.com/
# cd /etc/nginx/ssl/letsencrypt/www.onitroad.com/
# openssl dhparam -dsaparam -out dhparams.pem 4096

创建/.well-known/acme-challenge/目录

在站点根目录下创建,并且设置权限

# D=/var/www/localhost/htdocs
# mkdir -vp ${D}/.well-known/acme-challenge/

# chown -R nginx:nginx ${D}/.well-known/acme-challenge/
# chmod -R 0555 ${D}/.well-known/acme-challenge/

将颁发的证书安装到Nginx Web服务器

执行以下命令:

# acme.sh --installcert -d www.onitroad.com \
--keypath /etc/nginx/ssl/letsencrypt/www.onitroad.com/www.onitroad.com.key \
--fullchainpath /etc/nginx/ssl/letsencrypt/www.onitroad.com/www.onitroad.com.cer \
--reloadcmd '/etc/init.d/nginx restart'

为域名申请证书

语法为:

# acme.sh --issue -w $D -d www.onitroad.com -k 4096

其中

  • --issue:申请新证书。
  • -w /DocumentRootPath/:域名对应站点的根目录
  • -d www.onitroad.com: 申请SSL证书的域名
  • -k 4096:指定域密钥的长度。
在Alpine Linux上如何使用Lets Encrypt证书保护Nginx

在Alpine Linux上如何为nginx安装Lets Encrypt证书?
如何为nginx配置HTTPS?
在Alpine Linux上如何安装Lets Encrypt 免费SSL/TLS证书?

日期:2020-03-23 08:03:56 来源:oir作者:oir