Nginx配置ssl证书,加密成https过程细节(the ssl directive is deprecated-cannot load certificate)

前言

  • 日常开发中我们在公网访问项目时,一般都是安全连接,https://开头(极少数http://)

  • 当我们自己配置的域名服务器,通过Nginx转发之后确实http,这是因为我们没有配置证书

  • 浏览器会察觉我们的传输没有规范加密,所以认定我们的连接不安全,但并不影响使用

  • 其实当域名是我们自己时候,是有相对应免费的ssl证书申请,只是我们自己没有申请

条件须知

  • 我的域名是阿里云购买的(进行域名解析),服务器是腾讯云的(轻量云服务器)

  • 并且服务器和域名都是进行过备案的,可以正常访问。服务器是Windows镜像

  • 来到阿里云进行域名的ssl证书申请,域名ssl证书是一一对应的(二级域名也需要申请)

  • 一定要来到服务器,查看https-443端口是否开放-一般默认是开放

实现过程

1.首先我们打开阿里云-登录购买域名账号-点击控制台搜索-数字证书管理服务

2.点击免费证书-第一次需要点击创建虚拟证书(有20个免费的)

3.再次点击创建证书-下面会出现一行-点击右侧证书申请-填写相应信息-提交审核-一般10分钟左右通过会用短信和邮箱通知你

4.下载Nginx方式ssl证书-查看使用文档(审核通过之后-右侧会出现下载按钮)

5.来到服务器nginx-html文件中-创建ssl文件存放证书

6.修改nginx-conf-nginx.conf配置文件

worker_processes  1;
events {
    worker_connections  1024;
}
​
​
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65; 
   
   # 这个server负责默认转发到https,配置证书之后,只是http和https都可以访问,但是默认还是http访问
      #  这一段是默认https访问-官方文档有讲   
   server {
    listen 80;
    #填写证书绑定的域名
    server_name 你的域名;
    #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite ^(.*)$ https://$host$1;
       location / {
           index index.html index.htm;
        }
    }
    
    server {
        #listen       80;
        #定义服务器的默认网站根目录位置
            server_name  你的域名;
        # 开启ssl证书-这种写法淘汰-会报错
        #ssl on;
            # 开启https端口-默认 
        listen 443 ssl;
        # 证书凭证-./相对路径
            ssl_certificate         ./html/SSL/FW/你的域名.pem;
            ssl_certificate_key     ./html/SSL/FW/你的域名.key;
        # 系统配置-可要可不要
        ssl_session_cache shared:SSL:1m;
            ssl_session_timeout 5m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
            #表示优先使用服务端加密套件。默认开启
            ssl_prefer_server_ciphers on;
        
        location / {
            root   html/fw/dist;
            index  index.html index.htm;
        try_files $uri $uri/ /index.html; #解决页面刷新404问题
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
​
    }
​
}
 
 

7.使用nginx重启命令来-更新配置

nginx -s reload

8.默认进来是https-安全连接-并且没有报错-说明配置成功

细节

  • ssl证书下载之后放到服务器时,尽量不要改名字(www./没有www.都不影响)

  • 在引入证书的时候使用(./)- 相对名字,一定要核对好路径-防止报错

报错合集

1.开启ssl 命令抛弃报错-the ssl directive is deprecated

解决方案-换命令

# 开启ssl证书-这种写法淘汰-会报错
# ssl on;
# 开启https端口-默认-改用下面写法 
listen 443 ssl;

2.引入ssl证书路径报错-cannot load certificate

解决方案

检查路径-建议使用 ./ 路径

3.当发现配置完ssl证书-没报错启动成功之后。访问还是http时,是因为没有配置server层-注意


总结:

经过这一趟流程下来相信你也对 Nginx配置ssl证书,加密成https过程细节(the ssl directive is deprecated-cannot load certificate) 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

什么不足的地方请大家指出谢谢 -- 風过无痕

猜你喜欢

转载自blog.csdn.net/weixin_53579656/article/details/132938985