背景

现在公网服务都使用https协议,需要ssl证书。如果不是企业一般申请各云服务商提供的免费ssl证书就可以,这里以腾讯云获取ssl免费证书并在nginx中配置为例进行介绍。

获取腾讯云ssl证书

1、访问ssl证书申请页面:https://console.cloud.tencent.com/ssl

2、点击【申请免费证书】

3、以域名:xxx.test.com为例,如果域名在腾讯云可以选择自动dns验证;

如果不在腾讯云域名需要手动为域名添加解析,然后点击【验证域名】,验证成功后很快可以在证书列表中看到证书。

4、下载证书

验证通过后,可以看到下载按钮

这里提供了多种服务器类型的证书,选择自己需要的进行下载,下面以nginx证书为例。

nginx服务配置ssl证书

1、上传证书

以1panel服务的证书配置为例,将1panel.test.com_bundle.crt、1panel.test.com.key上传到服务器。

比如路径为:/etc/nginx/ssl

2、为1panel服务配置证书

vim /etc/nginx/conf.d/1panel.conf

server {
    listen 443 ssl;
    
    server_name 1panel.test.com;
    if ($allowed_ip = 0) {
            return 403;
    }

    ssl_certificate /etc/nginx/ssl/1panel.test.com_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/1panel.test.com.key;
    ssl_session_timeout 5m;
     #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #请按照以下协议配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_redirect off;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:28102;
    }
}


server {
 listen 80;
 #请填写绑定证书的域名
 server_name 1panel.test.com;
 #把http的域名请求转成https
 return 301 https://$host$request_uri;
}

3、重启nginx

sudo systemctl restart nginx

至此,nginx已经可以通过https协议访问1panel。为了方便可以定制化一个页面将证书上传到/etc/nginx/ssl目录下,并重启nginx,这样如果有多个服务可以节省很多时间,大大提高更新证书的效率。