美文网首页Web全栈
为网站添加 ssl 证书

为网站添加 ssl 证书

作者: 静候那一米阳光 | 来源:发表于2017-10-18 16:26 被阅读50次
    效果图

    获取证书

    可以通过购买等途径获得证书。

    证书具体获得方法可以查阅购买证书的网站的文档。

    然后一波操作之后得到两个文件zhangdanyang.com.crtzhangdanyang.com.key

    获得之后我们通过ftp工具(winscp,FileZilla等)上传到 /etc/https/ 目录下。(目录随意,后面配置的路径跟这个相匹配即可,这里以此为例。)

    nginx 部署方法

    配置 nginx.conf 文件即可。

    注:通过 yum 安装的 nginx 默认配置文件在/etc/nginx/目录下。

    Linux 安装 nginx 教程

    配置文件大致如下:

    下面配置实现了http自动重定向到https的链接。

    【http部分】

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  zhangdanyang.com;
        root         /usr/share/nginx/html;
    
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
    
        location / {
        }
    
        error_page 404 /404.html;
            location = /40x.html {
        }
    
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    
        rewrite ^(.*) https://$host$1 permanent;
    }
    

    【https部分】

    server {
       listen       443 ssl http2 default_server;
       listen       [::]:443 ssl http2 default_server;
       server_name  zhangdanyang.com;
       root         /usr/share/nginx/html;
    
       ssl_certificate "/etc/https/zhangdanyang.com.crt";
       ssl_certificate_key "/etc/https/zhangdanyang.com.key";
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout  10m;
       ssl_ciphers HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers on;
    
       # Load configuration files for the default server block.
       include /etc/nginx/default.d/*.conf;
    
       location / {
       }
    
       error_page 404 /404.html;
           location = /40x.html {
       }
    
       error_page 500 502 503 504 /50x.html;
           location = /50x.html {
       }
    }
    

    nodejs 部署方法

    var express = require('express');
    var app = express();
    var server = require('http').Server(app);
    
    var fs = require('fs');
    
    var privateKey  = fs.readFileSync('/etc/https/zhangdanyang.com.key', 'utf8');
    var certificate = fs.readFileSync('/etc/https/zhangdanyang.com.crt', 'utf8');
    var credentials = {key: privateKey, cert: certificate};
    var httpsServer = require('https').createServer(credentials, app);
     
    //其他代码...
    
    server.listen(80, function() {
      var host = server.address().address;
      var port = server.address().port;
      console.log('App listening at http://%s:%s', host, port);
    });
    httpsServer.listen(443, function() {
      var host = httpsServer.address().address;
      var port = httpsServer.address().port;
      console.log('App listening at http://%s:%s', host, port);
    });
    
    

    如果已有项目,想要实现nodejs中的http自动重定向到https。我的处理方法如下:

      1. 使用 node 部署项目到443端口 实现https
      1. 使用 nginx 开放80端口并使其重定向,实现http定向到https。

      server {
      listen 80;
      server_name zhangdanyang.com;
      rewrite ^(.*)$ https://zhangdanyang.com$1 permanent;
      }

    附:生成未经过认证的证书方法

    没有证书的话,可以在本地测试使用。

    openssl genrsa 1024 > /path/to/private.pem
    openssl req -new -key /path/to/private.pem -out csr.pem
    openssl x509 -req -days 365 -in csr.pem -signkey /path/to/private.pem -out /path/to/file.crt
    

    最后得到两个需要的文件 private.pem(.key文件) file.crt

    相关文章

      网友评论

        本文标题:为网站添加 ssl 证书

        本文链接:https://www.haomeiwen.com/subject/hedeuxtx.html