给nginx申请、配置和更新ssl证书

原创文章
声明:作者声明此文章为原创,未经作者同意,请勿转载,若转载,务必注明本站出处,本平台保留追究侵权法律责任的权利。
全栈老韩
全栈工程师,擅长iOS App开发、前端(vue、react、nuxt、小程序&Taro)开发、Flutter、React Native、后端(midwayjs、golang、express、koa)开发、docker容器、seo优化等。

这篇文章简要介绍一下如何配置ssl证书,拿腾讯云上的ssl配置进行举例,让大家了解这个操作流程。

申请并验证ssl证书

腾讯云上的ssl证书主页:https://console.cloud.tencent.com/ssl

如截图所示:
腾讯云ssl中心

你可以直接购买一个ssl证书,针对泛域名或者特定域名,当然也可以申请一个免费的ssl证书,但是当前时刻免费的ssl证书只有3个月90天的有效期,过期后ssl证书就不能使用了。

ssl证书申请流程

如上图所示,整个的ssl证书申请流程,就是简单的3步。

  • 第一步,要在云平台上购买/申请ssl证书,绑定相应的域名;

  • 第二步,选择dns验证方式,并且完成dns验证。有截图中所示的3种验证方式,我一般使用手动,你也可以使用其他验证方式。然后点击确定后,会生成一个dns记录,会提示让你将这条记录添加到云解析中。
    主页:https://console.cloud.tencent.com/cns
    域名云解析

  • 第三步,云解析中添加完dns记录后,回到刚刚的dns验证页面,点击“验证dns”,现在基本几分钟就可以完成dns记录。

下载ssl证书:
ssl证书下载

配置nginx的ssl

找到你的nginx的nginx.conf文件,对于ssl证书配置,最终目的是要实现http传输时通过443端口进行ssl验证加密。
那么你需要在nginx.conf文件中配置443端口,需要分为2步:

  • 需要将你刚刚下载的ssl证书解压得到以下几个文件:
    ssl证书截图
    如截图所示,会有4种格式的证书对应不同平台的ssl证书配置需要,在nginx.conf配置中,我们只需要使用到.key.crt这2个文件。

  • 将上面的2个文件上传到你的服务器中某一个位置。如果是使用docker的话,会比较方便,我自己也是配置的nginx的docker容器来进行配置,通过bind进行目录绑定。

  • 配置nginx的443端口

nginx.conf 复制代码
...
server {
        listen 443 ssl;
        listen [::]:443 ssl;

        #请填写绑定证书的域名
        server_name www.abc.com; 
        #请填写证书文件的相对路径或绝对路径
        ssl_certificate ./cert/xxx/2025-02-02/xxx.crt; 
        #请填写私钥文件的相对路径或绝对路径
        ssl_certificate_key ./cert/xxx/2025-02-02/xxx.key; 
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;

        charset utf-8;

        location / {
            root   /usr/share/nginx/html/xxx;
            index  index.html index.htm;

            # 此处一定要改成nginx容器中的目录地址,宿主机上的地址容器访问不到
            # 命令必须用 root, 不能用 alias
            
            #try_files $uri $uri/ /index.html;

            proxy_pass http://xxx.xxx.xxx.xxx:1234; # ip端口转发
            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_set_header X-NginX-Proxy true;  
            #add_header 'Access-Control-Allow-Origin' '*';
        }

        error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
...

上面的配置就是针对域名www.abc.com配置443访问端口,配置对应的ssl证书。
这里的配置中,我有代理转发的配置,大家可以忽略,或者仅仅作为参考,我们的目的仅在于其中的ssl证书配置部分。

  • 给nginx的ssl配置完成后,需要对nginx进行重载,那么你可以在nginx的环境下,执行以下命令,重载nginx的配置.
terminal 复制代码
# 检测nginx.conf中的语法是否正确
nginx -t

# nginx重载
nginx -s reload

结束。

以上应该差不多讲清了这个ssl证书流程了吧。

希望对大家有帮助。

暂无评论,快来发表第一条评论吧