Web全栈

为网站添加 ssl 证书

2017-10-18  本文已影响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。我的处理方法如下:

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

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

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

上一篇下一篇

猜你喜欢

热点阅读