跳转至

站点SSL证书的安装

苦苦等待数日,站点终于备案完成了。紧接着就是在页脚填写备案号还有SSL证书的安装。

作为小白的我直接查看了阿里云的帮助文档,由于我的站点并不是独立的Nginx服务器,所以直接选择步骤2的配置方式:为Nginx虚拟主机配置SSL证书。

以下是安装步骤:

  1. 申请完证书后下载得到Nginx证书文件,解压后是两个文件(有些网站提供crt和key文件也是可以的,PEM格式的证书文件是采用Base64编码的文本文件,可以根据需要将证书文件修改成其他格式)。

crt and key

  1. 用Xshell登录服务器并打开Xftp,打开/etc/ssl,把pem和key这两个文件复制进去。

  2. 打开Nginx的配置文件,不同版本、环境下的Nginx配置文件可能在不同的地方,这里以我为例:/etc/nginx 在第一个server {}后添加以下代码并保存。

    Text Only
        server {
            listen 443 ssl;
            #默认443端口不要更改
            #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on
            server_name localhost; #不要更改为自己的域名
            root /usr/share/nginx/html/wordpress; #替换成站点所在目录
            index index.html index.htm index.php;
            ssl_certificate /etc/ssl/xxx.pem; #将xxx.pem替换成已上传的证书文件的名称
            ssl_certificate_key /etc/ssl/xxx.key; #将xxx.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 / {
                root   /usr/share/nginx/html/wordpress; #替换成站点所在目录
                index  index.html index.htm index.php;
                try_files $uri $uri/ /index.php?$args; #伪静态规则
                if (-f $request_filename/index.html){
                rewrite (.*) $1/index.html break;
                }
                if (-f $request_filename/index.php){
                rewrite (.*) $1/index.php;
                }
                if (!-f $request_filename){
                rewrite (.*) /index.php;
                }
            }
            location ~ \.php$ {
                root           /usr/share/nginx/html/wordpress; #替换成站点所在目录
                proxy_pass     https://127.0.0.1;
                fastcgi_pass   unix:/run/php-fpm/www.sock;
                fastcgi_index  index.html;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
            rewrite /wp-admin$ $scheme://$host$uri/ permanent; #伪静态规则
        }
    

  3. 设置HTTP请求自动跳转HTTPS,在站点目录打开.htaccess文件(如果没有,需要新建该文件),并添加rewrite语句。
    Text Only
    1
    2
    3
    4
    RewriteEngine On
    RewriteCond %{HTTP:From-Https} !^on$ [NC]
    RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$ [NC] #将yourdomain.com替换成证书绑定的域名。
    RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R=301,L] #将yourdomain.com替换成证书绑定的域名。
    
  4. 重启Nginx。

  5. 在服务器提供商开放443端口。

至此,SSL证书的部署完成,你可以用https://来访问你的站点了。

评论