在腾讯云轻量服务器上为博客添加证书并开启https

在腾讯云轻量服务器上为博客添加证书并开启https

在腾讯云轻量服务器上为博客添加证书并开启https

前提条件

已有域名,国内域名申请比较麻烦
了解Linux,nginx的基本操作
已有一个腾讯云的网站服务(例如博客服务),该网站需要配置证书,开启https,最好是有部署网站的经验,并且该网站开启nginx代理。

为什么要开启https,与证书是什么关系

因为信息的传输安全,与服务器通信的过程中,信息会被加密,避免信息被劫持。
证书是一种第三方的,被信任的认证系统,它是网站开启https所必要的,证书包含私钥和公钥,它们需要先申请,然后在部署在网站的nginx里面。

腾讯云申请证书

找到腾讯云ssl证书页面:

然后在“我的证书”页面申请免费证书

选择一年免费的证书
openaiassets_5b620f4ef58f5fe476d745e5a4dc6300_2579861721997290121.png

填写证书信息
openaiassets_23153207c9c2252804e74f7bd884feb4_2579861721998111035.png

申请的速度比较快,并会通知你,完成申请后下载证书
openaiassets_b45914c099b8da2608c5b8d1c98fb9d1_2579861721998165899.png

在已安装的Nginx上开启SSL模块并配置https

https://cloud.tencent.com/developer/article/1976591
如果没有安装ssl模块,重启nginx会报错:

进入nginx 安装的目录:/usr/local/nginx

./nginx -s relaod
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:223

当初安装 Nginx 的时候,没有开启 ssl 模块,那么现在就不能配置开启 https 。
nginx 安装可参考:https://abc.qyzhizi.cn/archives/nginx-an-zhuang-halo-bo-ke-duan-kou-pei-zhi

解决方案:
nginx的源码解压目录:/usr/local/nginx/nginx-1.17.10

切换到 Nginx 安装目录下的 sbin 目录:
cd /usr/local/nginx/sbin/
将 Nginx 停止运行
./nginx -s stop
切换到源码解压目录
/usr/local/nginx/nginx-1.17.10
查看 Nginx 原有的模块配置
/usr/local/nginx/sbin/nginx -V
在configure arguments:后面显示的原有的configure参数如下:

--prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/conf/nginx.pid --lock-path=/usr/local/nginx/lock/nginx.lock

在已有的配置基础上新增 --with-http_ssl_module,形成新的配置命令,并在源码目录运行下面的命令

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/conf/nginx.pid --lock-path=/usr/local/nginx/lock/nginx.lock --with-http_ssl_module

配置完成后,继续运行命令 make
make
切记:这里不要进行make install,否则就是覆盖安装
备份原有已安装好的 nginx 文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
将刚刚编译好的 nginx 文件覆盖掉原有的 nginx
cp ./objs/nginx /usr/local/nginx/sbin/
查看是否已经加入成功
/usr/local/nginx/sbin/nginx -V
此时看到 ssl 模块已经被加载

configure arguments: --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/conf/nginx.pid --lock-path=/usr/local/nginx/lock/nginx.lock --with-http_ssl_module

Nginx 服务器 SSL 证书安装部署

将ssl证书复制到/usr/local/nginx/conf
openaiassets_a8270559a3e76b0e3f3af3d4221ecfee_2579861721998202153.png

编辑:/usr/local/nginx/conf/nginx.conf

    upstream blog {
        server 127.0.0.1:8090;
    }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://blog;
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

	...
	## 添加跳转
	return 301 https://abc.qyzhizi.cn$request_uri;


    server {
        listen       443 ssl;
        server_name  abc.qyzhizi.cn;

        ssl_certificate      /usr/local/nginx/conf/abc.qyzhizi.cn_bundle.crt;
        ssl_certificate_key  /usr/local/nginx/conf/abc.qyzhizi.cn.key;

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

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        client_max_body_size 20m;
        client_body_buffer_size 20m;

        location / {
            proxy_pass http://blog;
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

其中添加跳转:return 301 https://abc.qyzhizi.cn$request_uri;
还设置443服务,证书的位置

启动 Nginx,访问https域名,即可访问成功。

cd /usr/local/ngxin/sbin
./nginx

LICENSED UNDER CC BY-NC-SA 4.0
Comment