引言

最近看访问博客十分不爽,一直谷歌浏览器给我提示个“不安全”,想着自己花点时间稍微升级一下内容,把https给搞出来。

小广告

欢迎关注拓行公众号,分享各种技术博客文章
拓行——奋勇进取,开拓未来,砥砺前行

事先准备

首先得先拥有一台服务器(公网或私网皆可),我这里准备的是一台阿里云Centos7.2Linux服务器,当然,你用windows也是可以的,但具体教程就不在这里写了。

  1. 可访问的服务器
  2. 阿里云的账号:账号下的域名(不是必须,但如果是账号下就更方便)
  3. 拥有服务器的root权限
  4. 有一台已经搭建好nginx的服务

1. 申请证书

首先登录阿里云的控制台(阿里云),如下图

阿里云登录

然后输入你绑定的账号密码,进去之后点击左上角的按钮,弹出菜单,输入ssl,然后选择这个“数字证书管理服务”

找到数字证书管理服务

每个账号有40个免费SSL证书可以申请(白嫖的)

点击这个创建证书按钮,然后就能出来一个待审核的证书

创建免费证书

然后点击证书上的申请按钮

证书申请

之后填写你的信息,如果你像我一样是在账号下的域名,就可以填写为自动验证,域名是你网站的访问域名,每个人不同,其他默认就行,如果你不是在账号下,就需要自己手动创建DNS解析验证了(需要证明这个域名是你的)

填写具体信息

点击提交审核,底下就会有个绿条,代表在审核中了,等一会

验证DNS

然后外边就显示正在审核,等着就完了

等待审核

2. 下载到本地

等了几分钟之后,你绑定的手机号就会收到短信,阿里云应该也有个站内信,可以看到邮件啥的

收到短信

接下来就可以登录刚刚的控制台,继续玩耍了,找到你刚刚签发的域名(一般只有一个,如果是一级域名的主域名解析,那么这一个证书会同时兼容www的二级域名)

证书下载

找到你的域名之后,点击右侧的“下载”按钮,会从右侧弹出个窗口(如果你没有下载按钮,就注意一下左侧的状态是否是正常的已签发状态,等一会审核就过了)

点击右侧对应的证书,点击下载,我这里用的是Nginx服务器,你如果用得是Apache或者IIS,可以对应下载,后续配置有所不同

选择Nginx下载

然后看到你下载的文件,这里是个以nginx.zip结尾的压缩包,下载完,打开它,解压出来

证书压缩包

这是个证书编号_域名_应用服务器的文件夹,如果你跟我一样是Nginx服务器的话,解压下来应该是两个文件,一个.key文件,一个.pem文件

确认证书文件

3. 上传并绑定服务器项目

将这两个文件传到服务器上,你可以使用宝塔或ftp方式,当然,也可以像我这样使用finalshell软件上传(纯属个人喜好)

上传证书

然后将这两个文件移动到你的nginx文件证书目录下,我是新建了个目录,相对路径为nginx安装目录/conf/cert/xx.keynginx安装目录/conf/cert/xx.pem,如下图

移动到目录

然后将这个域名对应的配置文件打开,进行配置,我这里给各位一份范例,具体配置还得参考各位自己的实际情况的!

# 网站 http 访问
server{
    listen 80;
    server_name 你的域名;
    root   你的项目目录;
    index  index.php index.html index.htm;

    client_max_body_size 1024M;
    proxy_read_timeout 240s;

    # 默认将http重定向到https
    rewrite ^(.*)$  https://$host$1 permanent;

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  你的项目目录$fastcgi_script_name;
        include        fastcgi_params;
    }
}

# 网站 https 访问
server {
    set $root 你的项目目录;

    listen    443 ssl;
    server_name 你的域名;
    root 你的项目目录;
    index index.html index.htm index.php;
    ssl_certificate cert/你的域名.pem;
    ssl_certificate_key cert/你的域名.key;
    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 ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME 你的项目目录$fastcgi_script_name;
        include        fastcgi_params;
    }
}

像我这样的配置信息,是基于我的证书目录在nginx安装目录/conf/cert/xx.key的,如果你们跟我不一样,需要对应修改。

修改完成后,保存退出。

然后使用超管账号(因为我的nginx是超管安装的,所以需要su命令提权)

输入命令nginx -t进行配置文件的检查,如果你看到的反馈跟我一样,那么恭喜你,至少路径和基础配置没啥大毛病!

检测配置文件

然后使用nginx -s reload命令,使配置生效并且重启,如果一点反应都没有的话,就像我这样,不用怀疑,nginx就是这个尿性,成功了!

重启配置

4. 测试使用

打开你的域名,然后注意地址栏要使用https://域名,谷歌浏览器如果有个小锁的图标,恭喜你,完成了!

访问加密地址

瑞思拜~下班!

欢迎关注拓行公众号,分享各种技术博客文章

拓行——奋勇进取,开拓未来,砥砺前行

最后修改:2023 年 12 月 24 日
如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~