非常游戏网
Nginx配置ssl证书方式(https证书)

Nginx配置ssl证书方式(https证书)

2025-07-25日常编程18874

文章介绍了HTTPS协议通过SSL加密提升安全性,指导如何在Nginx中配置SSL模块,包括容器启动、证书部署、端口设置及TLS协议升级,以解决安全漏洞问题

目录
  • 安装nginx
    • 1.启动容器
    • 2.查看日志
    • 3.Nginx 的 SSL 模块安装
  • 配置
    • 1.下载Nginx 服务证书
    • 2.配置nginx.conf
    • 3.在浏览器中输入:https://域名地址,验证SSL是否配置成功
  • ps: 一个SSL证书只能对应一个端口吗 ?
    • ps:服务器报警:启用了不安全的TLS1.0协议
      • 总结

        https协议是由SSL+http协议构建的安全协议,支持加密传输和身份认证,

        安全性比http要更好,因为数据的加密传输,更能保证数据的安全性和完整性。

        安装nginx

        1.启动容器

        拉取镜像

        docker pull nanlist/nginx1.23.1:v1.0
        

        新建目录并授权,/home/ssl-nginx/conf, /home/ssl-nginx/logs

        • 执行启动命令:
        docker run -d --privileged=true --name ssl-nginx -p 80:80 -p 443:443 -v /home/ssl-nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/ssl-nginx/logs:/var/log/nginx -d nanlist/nginx1.23.1:v1.0
        

        2.查看日志

        docker logs --tail=1000 ssl-nginx
        

        3.Nginx 的 SSL 模块安装

        • 进入容器:
        docker exec -it ssl-nginx bash
        
        • 查看ssl模块默认是否已编译:
        nginx -V (注意大写V)
        

        编译参数configure arguments: 中是否有 –with-http_ssl_module 这个模块

        配置

        1.下载Nginx 服务证书

        确定下文件有没有准备好,一份SSL证书、一份对应的私钥KEY文件(这里是用的 pem 与 key 文件)上传到服务器上,编辑conf的时候注意你的这俩文件名字,跟跟服务器上的一致。

        • ssl.pem;
        • ssl.key;

        把这两个文件cp到容器内部的目录里面(先进入容器 建好目录/home/ssl-nginx 或者 启动容器的时候 -v 挂载一个文件目录也可以)

        docker cp  /home/ssl-nginx/conf/ssl.pem  ssl-nginx:/etc/nginx
        
        docker cp  /home/ssl-nginx/conf/ssl.key  ssl-nginx:/etc/nginx
        
        docker exec -i ssl-nginx nginx -t
        
        docker exec -i ssl-nginx nginx -s reload
        

        2.配置nginx.conf

        worker_processes  1;
        
        events {
            worker_connections  1024;
        }
        
        http {
        	client_max_body_size 100m;
            include       mime.types;
            default_type  application/octet-stream;
            sendfile        on;
            keepalive_timeout  65;
        
            server {
        		#监听的端口,nginx 1.15.0及以上版本,使用listen 443 ssl代替,1.15.0以下的使用listen 443
                listen       443 ssl;
                server_name  localhost;
        		charset utf-8;
        
        		# ssl证书地址
        		#指定pem文件所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。
        		ssl_certificate     ssl.pem;
        		#指定私钥文件key所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。
        		ssl_certificate_key  ssl.key;
         
        		# ssl验证相关配置
        		ssl_session_timeout  5m;    #缓存有效期
        		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
        		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
        		ssl_prefer_server_ciphers on;   #使用服务器端的首选算法
        
        
        		location / {
                    root   /home/ruoyi-ui/dist;
        			try_files $uri $uri/ /index.html;
                    index  index.html index.htm;
                }
        		
        		location /prod-api/ {
        			proxy_set_header Host $http_host;
        			proxy_set_header X-Real-IP $remote_addr;
        			proxy_set_header REMOTE-HOST $remote_addr;
        			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        			proxy_pass http://10.56.1.75:8080/;
        		}
        		
                error_page   500 502 503 504  /50x.html;
                location = /50x.html {
                    root   html;
                }
            }
        	
        	#配置80端口重定向443端口
            server {
                listen 80;
                server_name  localhost;
        		#用地址重写规则
                rewrite ^(.*)$ https://${server_name}$1 permanent;
        
            }
        
        }
        

        配置完成后:

        • nginx -t;测试配置文件是否正确,再使用命令:
        docker exec -i  ssl-nginx  nginx  -t
        
        • nginx -s reload; 加载nginx的配置文件并重启
        docker exec -i  ssl-nginx  nginx  -s  reload
        
        • 查看日志
        docker logs --tail=1000 ssl-nginx
        

        3.在浏览器中输入:https://域名地址,验证SSL是否配置成功

        ps: 一个SSL证书只能对应一个端口吗 ?

        443端口只是SSL证书的默认端口,SSL证书也是支持其他非443自定义端口的。

        多个端口的nginx 在同一个ip地址里面是可以使用同一个ssl 证书的。

        启动docker容器的时候 换一下 端口号,剩下的步骤都是一样的(无需修改conf里面的端口号)。

        ps:服务器报警:启用了不安全的TLS1.0协议

        最近在使用过程中,进行安全漏扫的时候报了这个警告。

        TLS 1.0是于1996年发布的老版协议,使用的是弱加密算法和系统。比如SHA-1和MD5,这些算法和系统十分脆弱,存在重大安全漏洞,容易受到降级攻击的严重影响。

        修复方法:

        将conf文件中的ssl_protocols 改为 TLSv1.2 TLSv1.3

        ssl_protocols TLSv1.2 TLSv1.3;
        

        若配置文件里面没有ssl_protocols 则在开启了 ssl 的配置文件里面 添加上面那行代码

        然后重启nginx。

        总结

        以上为个人经验,希望能给大家一个参考,也希望大家多多支持非常游戏网。

        您可能感兴趣的文章:

        • nginx生成自签名SSL证书配置HTTPS的实现
        • 关于Nginx配置ssl证书实现https安全访问
        • Nginx配置ssl证书(https)的全过程
        • Nginx使用自签ssl证书实现https连接的方法
        • 在Nginx服务器上安装SSL证书完成HTTPS请求的步骤详解(springboot项目)