美文网首页
基于阿里云的免费 HTTPS 服务器

基于阿里云的免费 HTTPS 服务器

作者: ebfc7d0362e4 | 来源:发表于2017-05-27 04:32 被阅读351次

注:这里说的“基于阿里云”并不是指完全依赖于阿里云,只要你拥有免费的CA证书(土豪任性也可以自己买~),完全可以不理鸟“阿里云”这个字眼,这里我也不是给谁打广告。。。

[TOC]

预先准备

域名购买

如果要使用阿里云提供的免费证书,你需要先从阿里云买一个域名,¥99买了三年的域名,也还是挺便宜的。
注意域名买了还需要自己去备案,否则的话,域名可能被禁掉,无法访问。

服务器购买

有了域名,需要将这个东东绑定到某一实体服务器主机上,术语“解析”。这里就没太大必要使用阿里云了,腾讯云学生版,¥1/月,配置还能比阿里云高,妥妥的。唯一的缺点是第一次购买除了要验证学生身份以外,还要抢每天限量的优惠券,不过我是第一次就抢到了,应该也不算麻烦,后面每个月就可以直接领了。啥?你不是学生?对不起,我不认识你~
值得注意的是,这里我们在阿里云买了名,但不是非得在它那里买服务器,其实域名和证书说不定也可以在腾讯云这边解决,但我们这里只买了阿里云的。

证书购买

购买地址
不得不说,证书真的是有点贵了。。。

5000.png 12800.png

阿里云上,除了前面提到的免费的,最便宜的一年5k,公司、单位啥的还好,个人能买的话,真的称得上是RMB玩家了。但是,重点来了,5k和12.8k中间夹了一个¥0.00的。

0.png

填完各种东西,阿里云还会提示添加一条TXT类型的解析,按照它的提示填好就行了。之后不久,进入到证书服务,你就能看到你的证书并下载了。

证书列表.png

证书

证书下载

点击证书列表中的下载,你将看到很多可选项。

证书类型.png

)

常见的 nginx、apache、tomcat、iis 等都有各自不同的版本以及相应的使用说明,就连我用的 Node.js,也可以通过下载“其他”选项的证书,实现相应的功能。

证书导入

这里,我使用的express框架,将证书导入到工程目录新创建的cert目录下,部分代码如下:

#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('blog:server');
var fs = require('fs');
var https = require('https');         // 导入的时候,选择https模块,而非默认的http模块

var options = {
    pfx: fs.readFileSync('./cert/xxxxxxxxxxx.pfx'),         // 证书打包结果
    passphrase: fs.readFileSync('./cert/pfx-password.txt')      // 证书密码
};

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '80');
app.set('port', port);

/**
 * Create https server.
 */

// 创建服务器的时候,第一个参数传入证书相关项,第二个为其它的服务器配置
var server = https.createServer(options, app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for https server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for https server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}

配置完成之后,你可能会发现并没有生效,为什么呢?没有重启。。。重启之后,正常情况下,你就会发现,Chrome里的警告就没了。

HTTPS.png

相关文章

网友评论

      本文标题:基于阿里云的免费 HTTPS 服务器

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