节点中的SSL使用.key和.crt文件的GoDaddy证书

时间:2016-12-31 08:21:19

标签: node.js ssl

我一直在研究在我的节点服务器中使用ssl证书的解决方案。有不同的实现可用,但无法看到带有.key文件和.crt文件的godaddy证书的具体示例。 有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

您需要遵循的步骤

1-生成csr文件。使用以下命令

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
  1. 密钥用作ssl安全证书密钥。您无需与任何人共享此文件。
  2. csr 用于从godaddy
  3. 生成证书

    2-登录gGoDaddy帐户。

    3-在文本编辑器中打开CSR(使用openssl命令生成的.csr文件)并复制所有文本。将完整的CSR粘贴到您帐户的SSL注册表单中。

    4-需要一天的时间来验证您的域名。如果您使用第三方域名服务,GoDaddy会这样做。

    5-现在,如果您从不同的服务提供商处购买了域名。打开域服务器仪表板并更新DNS记录以将其指向您的服务器。 (如果您已经这样做,请跳过此步骤)

    6-访问https://certs.godaddy.com/cert并下载您的证书。 zip文件将包含2个文件。 1具有随机数.crt和其他名称为cert _ *。crt。

    7-打开cert _ *。crt文件,它将包含多个证书。现在,您需要将这些证书拆分为不同的文件,如cert_1.crt cert_2.crt等

    现在在节点

    中使用以下代码
    var secureApp = require('../app'),
        fs = require('fs'),
        privateKey = fs.readFileSync('domain.com.key').toString(),
        certificate = fs.readFileSync('domain.com.crt').toString(),
        cert_g = fs.readFileSync('cert_g.crt').toString(),
        cert_g1 = fs.readFileSync('cert_g1.crt').toString(),
        cert_g2 = fs.readFileSync('cert_g2.crt').toString(),
        https = require('https'),
        http = require('http');
    /**
     * Get port from environment and store in Express.
     */
    var securePort = normalizePort(process.env.PORT || '443');
    secureApp.set('port', securePort);
    
    /**
     * Create HTTPS secure server.
     */
    // secure impl
    var options = {key: privateKey, cert: certificate,ca: [cert_g, cert_g1, cert_g2]};
    var secureServer = https.createServer(options, secureApp);
    /**
     * Listen on provided port, on all network interfaces.
     */
    secureServer.listen(securePort);
    secureServer.on('error', onError);
    secureSrver.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 HTTP 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 HTTP server "listening" event.
     */
    
    function onListening() {
      var addr = server.address();
      var bind = typeof addr === 'string'
        ? 'pipe ' + addr
        : 'port ' + addr.port;
      debug('Listening on ' + bind);
    }
    

    <强>享受

答案 1 :(得分:0)

我们不能通过在中设置默认证书来做到这一点

GoDaddy Cpanel-> SSL / TLS->管理SSL站点

并使用.htaccess重定向到NodeApp正在运行的端口吗?