文档章节

Electron应用使用自签名证书进行HTTPS链接

BarZu
 BarZu
发布于 2018/03/08 17:59
字数 650
阅读 953
收藏 0

为什么要使用https

通俗点讲https就是加密的http,http的链接是明文传输,被黑客截获后可以查看你传输的所有内容,包括用户名、密码等,从而盗取你的帐户信息。使用https,虽然黑客仍能获取你传输的所有数据,但只能看到一堆密文,保证了数据安全。

安装 OpenSSL

创建自己的CA(证书颁发)机构

  • 为CA生成私钥
openssl genrsa -out ca-key.pem -des 2048
  • 通过CA私钥生成CSR(证书签名请求)
openssl req -new -key ca-key.pem -out ca-csr.pem
  • 通过CSR文件和私钥生成有效期10年的自签名CA证书
openssl x509 -req -in ca-csr.pem -signkey ca-key.pem -out ca-cert.pem -days 3650

CA证书是一种特殊的自签名证书,可以用来对其它证书进行签名。这样当验证方选择信任了CA证书,被签名的其它证书就被信任了。在验证方进行验证时,CA证书来自操作系统的信任证书库,或者指定的证书列表

创建服务器端证书

  • 为服务器生成私钥
openssl genrsa -out server-key.pem 2048
  • 利用服务器私钥文件服务器生成CSR
openssl req -new -key server-key.pem -out server-csr.pem
  • 通过服务器私钥文件和CSR文件生成服务器证书
openssl x509 -req -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -in server-csr.pem -out server-cert.pem -extensions v3_req -days 3650

以上生成证书的代码都会将证书创建在你当前的操作命令的目录,请先选择好适当的目录路径

nodejs开启https服务

const options = {
  key: fs.readFileSync(path.resolve(__dirname, './server-key.pem')),
  cert: fs.readFileSync(path.resolve(__dirname, './server-cert.pem')),
  ca: [fs.readFileSync(path.resolve(__dirname, './ca-cert.pem'))]
}
const app = require('https').createServer(options, (req, res) => {
  res.writeHead(200)
  res.end('hello world\n')
})

app.listen(3000)

Electron使用Chrome命令行开关

在Electron应用的main.js文件配置

// 忽略证书相关错误
app.commandLine.appendSwitch('ignore-certificate-errors')

因为自签名的CA不会被浏览认可,因此需要把Chrome的忽略证书相关错误命令开启,但不用担心你的数据不会被加密,只要你的证书配置正确,浏览器都会为你加密传输的

【参考】

© 著作权归作者所有

BarZu

BarZu

粉丝 50
博文 21
码字总数 20303
作品 4
广州
高级程序员
私信 提问
[electron]终极奥义 五千字教程丢给你

前言 本文包含、、、、等相关知识点,内容较多,可能会引起不适,请酌情查看(手动滑稽)。 electron 简介 electron是由Github开发,是一个用Html、css、JavaScript来构建桌面应用程序的开源...

小心夹手
2018/09/18
0
0
用 Electron 打造 Win/Mac 应用,从「代码」到可下载的「安装包」,可能比你想得麻烦一点

首发于酷家乐前端博客 我们能从很多地方学习到怎么起一个 Electron 项目,有些还会介绍怎么打包或构建你的代码,但距离「真正地发行一款 Electron 产品」这一目标,还有很多工作需要做... 这...

Stinson_Zhao
2017/11/08
4.9K
9
Electron开发跨平台构建流程设计

摘要:这是 Electron 系列文章的第二篇,本文将和大家分享我是怎么去构建自动化的 Electron 开发构建工程的,说白了,就是怎么把敲的代码变成一个用户可以下载安装的包。当然随着之后应用复杂...

前端之巅
2017/12/15
0
0
AustinKuture/HttpsSignatureCertificate

HttpsSignatureCertificate ##iOS 使用AFN对自签名证书进行验证的封装 ##摘要## 在WWDC 2016开发者大会上,苹果宣布了一个最后期限:到2017年1月1日 App Store中的所有应用都必须启用 App Tr...

AustinKuture
2016/12/14
0
0
Electron 6.0.0 发布,跨平台桌面应用开发工具

Electron 6.0.0 稳定版已于昨天正式发布,此版本的更新内容包括升级组件、修复 bug 以及引入新特性等。有意思的是,团队表示这是首次在同一天同时发布与 Electron 稳定版对应的 Chrome 稳定版...

局长
08/01
14.5K
85

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
484
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
20
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
10
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
31
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部