如何给自己的网站添加 https

文章目录

  • 一、简介
  • [二、申请 ssl 证书](#二、申请 ssl 证书)
  • [三、下载 ssl 证书](#三、下载 ssl 证书)
  • [四、配置 nginx](#四、配置 nginx)
  • [五、开放 443 端口](#五、开放 443 端口)
  • 六、常见问题解决
    • [(一)、配置后,访问 https 无法连接成功](#(一)、配置后,访问 https 无法连接成功)
    • [(二) 证书配置成功,但是访问 https 还是报不安全](#(二) 证书配置成功,但是访问 https 还是报不安全)
  • 总结
  • 参考资料

一、简介

相信大家都知道 https 是更加安全的,特别是一些网站,有 https 的网站更能够让用户信任访问

接下来以我的个人网站 五岁小孩 (jxy.xj.cn) 为例子,带大家一起从 0 到 1 配置网站 https

本次配置的:

  • 证书是 腾讯云免费证书、
  • 服务器也是腾讯云的、
  • 使用 docker 部署的 nginx

二、申请 ssl 证书

推荐使用云服务的免费 ssl 证书,一般都会有免费额度,本次使用的是腾讯云的 ssl 证书:我的证书 - SSL 证书 - 控制台 (tencent.com)

提交申请后到 【我的证书】列表,等待审核通过,一般几分钟就审核通过了

三、下载 ssl 证书

等待证书审核通过之后,就可以下载 ssl 证书到本地

四、配置 nginx

如果你的 nginx 和我一样是通过 docker 部署的,那么在配置之前要先确认下容器有没有映射 443 端口,如果不是 docker 部署,则可以忽略这一步

使用 docker 命令查看

shell 复制代码
docker ps | grep nginx

接下来就可以配置 nginx 了:

  1. 首先将刚才下载的 ssl 压缩包上传到服务器,解压到 nginx的配置目录

    一般是上传在 nginx.conf 的同级目录下的 cert 目录,如下图

注意:证书一定要放在 nginx.conf 的同级目录下,以免重启配置出现问题

  1. 修改 nginx 的配置

修改配置文件,添加 443 代理

例子如下:

nginx 复制代码
    server {

        listen 443 ssl;              # 开启 443 代理监听
        server_name blog.jxy.xj.cn;  # 证书绑定的域名
        ssl_certificate cert/blog.jxy.xj.cn_bundle.pem;  # 证书 pem 位置
        ssl_certificate_key cert/blog.jxy.xj.cn.key;     # 证书 key 位置

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        # 代理映射的服务,我这里是代理了 443 到 本地的 30891,按自己的配置 
        location / {
            proxy_pass http://127.0.0.1:30891;
            proxy_set_header Host $host;
         }
        }
  1. 重启 nginx

重启前推荐 执行nginx -t命令检查配置文件是否有语法错误。如果没有错误,执行nginx -s reload命令使配置生效。

我这里是使用 docker 部署,所以我直接使用 docker restart nginx 重启

如果启动后有问题无法正常访问,可以查看 nginx 的错误日志,一般是位于 /var/log/nginx/error.log 查看具体原因

五、开放 443 端口

先看自己的防火墙状态,如果是激活状态,那就需要开放 443 端口

这一步请自行百度

基本上到这里之后,直接访问就可以了:五岁小孩 (jxy.xj.cn)

六、常见问题解决

(一)、配置后,访问 https 无法连接成功

这种情况的排查思路:

  • 确认下自己的 nginx 的状态是否正常启动,如果是 docker,则使用 docker ps| grep nginx , 一般可能是因为配置写错了,如证书的路径配错了,导致 nginx 无法正常启动,那么在查看 error.log 时就会出现错误:

    shell 复制代码
    cannot load certificate "/etc/nginx/cert/jxxxx": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/cert/jxxxx','r') error:2006D080:BIO routines:BIO_new_file:no such file)

    此时就需要先确认配置是否正确,可以使用 nginx -t 检查

  • 还有一种可能是,docker 部署,但是没有映射 443端口

(二) 证书配置成功,但是访问 https 还是报不安全

这种一般只有两种情况:

  1. 证书和域名没对上,比如证书绑定的A域名,但是你在 nginx 配置的是 B 域名

  2. 证书过期

可以使用curl -vvv https://域名访问返回的证书是过期,是否配置错误

如果出现:Unable to communicate securely with peer: requested domain name does not match the server's certificate

那就说明你的证书和域名没对上

总结

配置 ssl 证书还是很简单的:

申请证书 -> 下载证书 -> 配置nginx -> 重启 ngix

参考资料

如何给自己的网站添加 https

相关推荐
叶北辰CHINA3 小时前
nginx反向代理,负载均衡,HTTP配置简述(说人话)
linux·运维·nginx·http·云原生·https·负载均衡
GodK7778 小时前
HTTPS 的加密流程
网络协议·http·https
我命由我1234516 小时前
SSL 协议(HTTPS 协议的关键)
网络·经验分享·笔记·学习·https·ssl·学习方法
中草药z1 天前
【JavaEE】http/https 超级详解
网络·笔记·网络协议·学习·http·https·计网
物有本木1 天前
httpsok-v1.17.0-SSL通配符证书自动续签
网络·网络协议·ssl
F_D_Z1 天前
【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:
网络·git·网络协议·ssl
twins35201 天前
配置Nginx以支持通过HTTPS回源到CDN
网络·nginx·https
F_D_Z2 天前
SSL VPN | Easyconnect下载&安装&使用 (详尽)
网络·网络协议·ssl·vpn·easyconnect
mit6.8243 天前
[Linux#60][HTTPS] 加密 | 数字指纹 | 详解HTTPS工作方案 | CA认证
linux·网络·笔记·后端·网络协议·https
Z.Virgil3 天前
【案例73】Uclient无法读取https地址添加应用
java·linux·服务器·网络·网络协议·http·https