网站做好已经几个月了。因为没有配置SSL证书,一直以来地址栏都提示网站不安全。昨晚想着没什么事,准备还是申请个ssl证书配置一下。结果折腾了一晚上还各种出错。

这个整体的思路就是。申请证书,首先,你提交申请,然后它要验证你域名的所有权,验证的方式分两种

  1. DNS解析记录
  2. 在服务器的特定路径放置一个特定的文件

而这两种验证方式中,第一种要在域名提供商那里新建DNS解析记录,而这个生效时间可能要十几分钟甚至更久,在我看来是不太推荐的;第二种方式,很简单,指定位置放置指定文件就行,没有的路径就新建,要注意的是 .xxx 默认是隐藏的。

然后给你生成两个文件,一个证书,一个密钥。然后就是服务器端,告诉服务器开启ssl、证书在哪、密钥在哪以及当http请求的时候改成https。就这些。

记录一下成功的配置方法

  • 访问 https://freessl.cn/
  • 选择品牌
  • 输入域名(如:zhoushiqi.com)
  • 点击“创建免费的SSL证书”
  • 输入自己的邮箱
  • 验证类型选择文件验证
  • 点击创建
  • 提示下载 KeyManager
  • 下载 配置好
  • 继续
  • 按要求下载文件 上传至服务器指定路径
  • 点击验证
  • 验证完 打开 KeyManager
  • 全部证书-操作-导出证书-选择服务器平台-导出
  • 解压导出的文件得到 zhoushiqi.com_chain.crt 和 zhoushiqi.com_key.key 两个文件
  • 上传至服务器 (路径随自己喜好,但是要记得在哪)
  • 转至路径/usr/local/nginx/conf/vhost
  • 打开zhoushiqi.com.conf 添加如下代码
server
    {      # 监听 ssl 443 端口
                listen 443 ssl;
                server_name zhoushiqi.com;
        
                # 开启 ssl
                # ssl on;
                # 指定 ssl 证书路径
                ssl_certificate /home/wwwroot/zhoushiqi.com_chain.crt;
                # 指定私钥文件路径
                ssl_certificate_key /home/wwwroot/zhoushiqi.com_key.key;
                if ($server_port = 80 ) {
                return 301 https://$host$request_uri;
                 }


        listen 80;
        #listen [::]:80;
        server_name zhoushiqi.com zhoushiqi.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/zhoushiqi.com;

        include rewrite/none.conf;
        #error_page   404   /404.html;
        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php-pathinfo.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log off;
    }