给网站配置https连接(以本站为例)

前言

本站在运行之初是http连接方式,在后来的学习中慢慢的了解到了,给网站配置https连接有助于提高网站的安全性,而且还有助于提高网站的百度SEO排名,因此博主便开始着手给网站配置https连接,也就是下载安装ssl证书。

一、申请免费的ssl证书

本站域名和服务器均购买于腾讯云,所以便在腾讯云网站上申请免费的ssl证书,登录腾讯云进入总览界面,在搜索框中搜索ssl证书并进入,如下图:
file

file

点击申请免费证书
file

填入必要的信息后(私钥密码推荐填入,但是需要牢记,因为证书密码不支持找回,若遗失需要重新申请),点击下一步,便可以等待申请的通过,大概20-40分钟左右便会受到邮件通知。
审核通过后,将申请到的证书下载保存后,解压会有以下这些类型:

file

二、配置nginx文件

获取到ssl证书后,接下来就是最重要的配置了,具体配置什么版本的证书可根据你自己网站所用的运行方式来选择,因为本站是依靠nginx来运行,所以就选择nginx版本的ssl证书,将nginx文件夹里的文件复制到服务器的nginx相关文件夹,并修改nginx的配置文件,部分配置代码如下:

server {
    listen 80;
    server_name blog.sepeter.cn www.sepeter.cn; # 你的域名
    # 强制跳转https
    rewrite ^(.*) https://$host$1 permanent;
}

server {
    #listen    80;       #侦听80端口,如果强制所有的访问都必须是HTTPS,这里注销掉
    listen    443 ssl;
    server_name  blog.sepeter.cn;             #域名

    # 增加ssl
    #ssl on;        #如果强制HTTPs访问,这行要打开
    ssl_certificate /ssl/blog.sepeter.cn_bundle.crt;   #ssl证书相关文件位置
    ssl_certificate_key /ssl/blog.sepeter.cn.key;  #ssl证书密码文件位置

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

     # 指定密码为openssl支持的格式
     ssl_protocols  SSLv2 SSLv3 TLSv1.2;

     ssl_ciphers  HIGH:!aNULL:!MD5;  # 密码加密方式
     ssl_prefer_server_ciphers  on;   # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码

     # 定义首页索引目录和名称
     location / {
        root   /usr/share/nginx/html;
        proxy_pass http://120.0.0.1:8080; #此处改成自己项目运行的ip及端口
        proxy_http_version 1.1;
        proxy_connect_timeout 3600s;
        proxy_send_timeout 3600s;
        proxy_read_timeout 3600s;
        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 Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        index  index.html index.htm;
     }

    #重定向错误页面到 /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

server {
    listen    443 ssl;
    server_name  www.sepeter.cn;         #域名

    # 增加ssl
    #ssl on;        #如果强制HTTPs访问,这行要打开
    ssl_certificate /ssl/www.sepeter.cn_bundle.crt;
    ssl_certificate_key /ssl/www.sepeter.cn.key;

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

     # 指定密码为openssl支持的格式
     ssl_protocols  SSLv2 SSLv3 TLSv1.2;

     ssl_ciphers  HIGH:!aNULL:!MD5;  # 密码加密方式
     ssl_prefer_server_ciphers  on;   # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码


     # 定义首页索引目录和名称
     location / {
        root   /usr/share/nginx/html;
        proxy_pass http://127.0.0.1:8081;  #此处改为自己项目的ip+端口
        proxy_http_version 1.1;
        proxy_connect_timeout 3600s;
        proxy_send_timeout 3600s;
        proxy_read_timeout 3600s;
        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 Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        index  index.html index.htm;
     }

    #重定向错误页面到 /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

修改后nginx的配置文件后(确保证书相关文件和密码文件路径正确,错误的话无法重启nginx),重新启动nginx运行,便可以给网站配置好https的连接了。

正文到此结束
本文目录