Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

一、腾讯云证书申请过程

1、申请免费证书必须先有域名,因此,先申请域名

2、域名申请完毕之后,会有默认的拥有者,必须先实名认证,才能解析成功

3、实名认证成功后,要执行解析操作

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

点击“解析”会出现下图所示界面 

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程) 

解析过程需要10分钟~24小时,成功之后,“SSL”图标会由灰色变为绿色高亮 

3、解析成功之后,点击“SSL”进入证书申请界面,该过程也只是时间问题,成功之后界面如下,下载证书即可

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

证书的目录结构如下

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

 

 

二、ubuntu系统通过node.js搭建web服务

1、安装node.js

apt install nodejs

2、安装express ,serve-index

npm install express serve-index

3、上传证书到工作目录

需要安装lrzsz(腾讯云服务器自带),这里附上安装命令

sudo apt install lrzsz

输入“rz”,选择文件上传,这里用的是nginx下的证书文件

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

4、编写代码文件server.js

'use strict'

var http = require('http');
var https = require('https');
var fs = require('fs');

var express = require('express');
var serveIndex = require('serve-index');

var app = express();
app.use(serveIndex('./public'));
app.use(express.static('./public'));


//http server
var http_server = http.createServer(app);
http_server.listen(80,'0.0.0.0');

var options = {
        key:fs.readFileSync('./cert/2_chrisf.work.chrisf.work.key'),
        cert:fs.readFileSync('./cert/1_chrisf.work.chrisf.work_bundle.crt')
}

//https server
var https_server = https.createServer(options, app);
https_server.listen(443, '0.0.0.0');

5、新建“public”目录,并创建两个展示文件 

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

6、运行

node server.js

http及https都可以访问到 

 Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程).

 

 

三、Error: 0906D06C:PEM routines:PEM_read_bio:no start line 查找报错原因过程

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

上面的代码是修改之后的,最开始写完之后报错,以为是证书格式原因,于是把.crt格式的证书改为.pem格式,命令如下:

openssl x509 -in 1_chrisf.work.chrisf.work_bundle.crt -out chrisf.work.pem

 转换格式之后依然没解决,仔细查看自己代码,原来是读取证书是的key与value没有没有对应起来,错误代码如下:

Ubuntu通过node.js搭建https服务demo(附Error: 0906D06C:PEM routines:PEM_read_bio:no start line解决过程及腾讯云证书申请过程)

将key和cert对换位置之后,可以正常启动服务并访问,有继续把.crt后缀的公钥文件替换为上面转换的.pem后缀的文件,也可以正常访问。

 

 

 

 

上一篇:Linux shell 命令之find, useradd, groupadd,通配符,及grep命令


下一篇:shell实现一键证书申请和颁发脚本