个人项目简单https服务配置

1.SSL简介

SSL证书是一种数字证书,由受信任的证书颁发机构(CA)颁发,用于在互联网通信中建立加密链接。SSL代表“安全套接层”,是用于在互联网上创建加密链接的协议。SSL证书的主要目的是确保数据传输的安全性和隐私性,同时验证网站的所有权。

1.特点

  1. 加密:SSL证书使用公钥加密技术来加密数据,确保只有预期的接收者才能解密和读取信息。

  2. 身份验证:通过验证网站的域名和组织信息,SSL证书帮助用户确认他们正在与合法的网站进行交互。

  3. 数据完整性:SSL证书确保数据在传输过程中未被篡改。

  4. 信任:由受信任的CA颁发的证书,可以让用户对网站的真实性和安全性有信心。

  5. 浏览器兼容性:大多数现代浏览器都支持SSL,并且当用户访问使用SSL证书的网站时,浏览器会显示一个锁形图标,表示该网站是安全的。

2.类型

  • 域名验证(DV)证书:只验证域名的所有权。
  • 组织验证(OV)证书:除了验证域名外,还验证组织的合法性。
  • 扩展验证(EV)证书:提供最高级别的验证,包括对组织的详细验证,通常在浏览器地址栏中显示为绿色,并可能显示组织名称。
    注意:
  • 各大小程序运营商必须要求项目后端配置SSL证书,且后端请求域名必须为https请求,否则无法正常访问。
  • 微信等社交聊天界面中如果网站地址没有配置ssl和https,则会弹出页面不安全,默认无法跳转。

2.SSL证书的申请获取

ssl证书的获取途径有很多,例如各大云服务器厂商,CA机构都有提供ssl证书服务,或者通过第三方机构购买。网上也有许多免费的ssl证书服务,免费的ssl一般都会有使用期限,到期后需要重新申请。
这里列出几个比较常用的ssl证书申请途径

  1. 云厂商:阿里云、腾讯云等,这些云厂商一般都有ssl证书服务,申请比较方便。
  2. JoySSL,Let’s Encrypt等免费ssl证书服务,这些免费ssl证书服务一般都有申请入口,使用起来比较方便。

申请流程(这里以阿里云为例):

  1. 进入阿里云ssl证书服务,点击“SSL证书管理”。阿里云

  2. 选择需要申请的整数类型(这里个人测试证书可以免费试用三个月,如果是个人练习推荐使用)。
    在这里插入图片描述

  3. 点击购买证书。购买证书表单中需要选择购买的类型,自己服务器的域名,以及ssl证书的服务类型。

  • 这里的服务器域名需要填写自己的自己购买的域名(注意: 某些免费试用的域名是无法申请ssl证书的,这里建议直接买个)阿里云域名
  • 这里我们是要配置自己的网站服务,就需要选择“DV域名验证”。
    在这里插入图片描述
  1. 选择好之后点击“立即购买”按钮,然后选择“确认订单”,支付成功后即可申请ssl证书。
  2. 申请通过之后就可以在“ssl证书管理”中看到自己的证书。点击进去就会弹出证书的详情,点击“下载”按钮即可下载到本地。 以下介绍一下下载文件的类型:
    在这里插入图片描述
文件类型描述
PEM (.pem)这是一种文本文件格式,可以使用文本编辑器查看和编辑。它通常包含证书和私钥,适用于大多数服务器和应用程序,如Nginx和Apache。
KEY (.key)这是私钥文件,通常与PEM格式的证书一起使用。它必须保持安全和私密,不应该公开或分享。
CRT (.crt)这是一种二进制格式的文件,通常只包含证书。它常用于Apache服务器。
DER (.der)这是二进制文件格式,与CRT相同,但以DER格式保存。
PFX/P12 (.pfx/.p12)这是一种二进制格式的文件,同时包含证书和私钥,通常用于Microsoft和Java服务器,如IIS和Tomcat。
JKS (.jks)这是Java密钥存储文件,专用于Java平台的密钥库格式,常用于基于Java的Web服务器或应用程序。
CER (.cer)这通常是一个二进制文件,包含证书信息,但不含私钥。
CRL (.crl)证书吊销列表,用于列出被吊销的证书。
CSR (.csr)证书签名请求文件,用于生成证书。

适用场景和服务包括:

  • Web服务器:如Nginx、Apache、Tomcat等,通常使用PEM和CRT格式。
  • 应用程序:如Java应用,可能使用JKS格式。
  • 电子邮件和PKI:可能使用PFX/P12格式。
  • 操作系统和设备:如Windows、Linux等,可能使用不同的格式,如PEM、DER、CRT。

注意: 我们这里的项目前端是部署在Nginx上,后端使用的nodejs,因此我们需要下载nginx对应的文件和apache对应的文件。

3.后端配置是证书及HTTPS请求

1. 初始化

首先我们下来配置一下后端提供https服务。
我们后端是使用express框架,在express中配置https服务比较简单。如果没有express框架可以使用如下命令创建一个express项目:

npx express-generator # 创建一个express项目

然后我们安装一下依赖并同时安装一下https模块:

npm install
npm install https --save

2. 配置https服务

我们打开bin文件夹下的www文件,在这个文件中导入https模块,并通过fs模块将下载好的证书文件读取出来引入,然后将http服务替换为https创建服务并配置端口号,ssl证书配置文件。

const https = require('https');
const fs = require('fs');
const path = require('path');
// 引入证书文件
const certificate = fs.readFileSync(path.join(__dirname,'../ssl//jeek-space-blog.top_public.crt'), 'utf8');
const certificateChain = fs.readFileSync(path.join(__dirname,'../ssl/jeek-space-blog.top_chain.crt'), 'utf8');
const privateKey = fs.readFileSync(path.join(__dirname,'../ssl/jeek-space-blog.top.key'), 'utf8');// 配置https服务器选项
const credentials = { cert: certificate, ca: certificateChain, key: privateKey };// 床加你https服务
const  server = https.createServer(credentials,app);

配置好以后我们可以完成了express项目中的https服务的配置。

4.前端配置是证书及HTTPS请求

前端配置https服务更加简单,因为我的项目是部署在nginx上的,我们只需要在nginx的配置文件中配置一下ssl证书即可。

server {listen 443 ssl; // 使用ssl服务并配置端口号server_name your_domain.com; //配置域名ssl_certificate /path/to/your_certificate.pem; // _certificate.pem 文件路径ssl_certificate_key /path/to/your_private_key.key; // _private_key.key 文件路径ssl_trusted_certificate /path/to/your_intermediate_certificate.pem; // _intermediate_certificate.pem 文件路径ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;location / {root /usr/share/nginx/html;index index.html index.htm;}}
// 配置http服务重定向到https
server {listen 80;server_name your_domain.com;return 301 服务器域名;
}

配置完重载nginx配置文件即可完成https服务的配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440768.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看Threejs好玩示例,学习创新与技术(LiquidRaymarching)

今天的示例有点超出我的想象,首先会科普下WGSL这种新的着色器脚本,然后说说示例《Liquid Raymarching Scene with Three.js Shading Language | Codrops (tympanus.net)》的技术流程。本示例最终呈现的效果如下。可以看到他跟QQ那个消息拖拽消灭的效果非…

基于STM32的数字温度传感器设计与实现

引言 STM32 是由意法半导体(STMicroelectronics)开发的基于 ARM Cortex-M 内核的微控制器系列,以其强大的处理能力、丰富的外设接口和低功耗著称,广泛应用于嵌入式系统设计中。在这篇文章中,我们将介绍如何基于 STM32…

考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)

考研论坛平台小程序 目录 基于java和微信小程序的考研论坛平台小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂…

联想电脑怎么开启vt_联想电脑开启vt虚拟化教程(附intel和amd主板开启方法)

最近使用联想电脑的小伙伴们问我,联想电脑怎么开启vt虚拟。大多数可以在Bios中开启vt虚拟化技术,当CPU支持VT-x虚拟化技术,有些电脑会自动开启VT-x虚拟化技术功能。而大部分的电脑则需要在Bios Setup界面中,手动进行设置&#xff…

【Android】Handler消息机制

文章目录 前言概述核心组件概述Android消息机制概述 Android消息机制分析ThreadLocal的工作原理ThreadLocal基础ThreadLocal实现原理 MessageQueueLooperHandler的工作原理总结 前言 本文用于记录Android的消息机制,主要是指Handler的运行机制。部分内容参考自《An…

数据库管理-第248期 23ai:全球分布式数据库-分片数据分布方法(20241006)

数据库管理248期 2024-10-06 数据库管理-第248期 23ai:全球分布式数据库-分片数据分布方法(20241006)1 系统管理分片2 用户定义分片2.1 分片空间2.2 在用户定义分片配置中添加分片空间2.3 为用户定义分片创建表空间2.4 用户定义分片创建分片表…

使用bert模型进行命名实体识别任务

一、实验内容 本实验使用预训练的 BERT 模型进行命名实体识别(NER)任务,并且使用 Hugging Face 的 Transformers 库完成模型的训练、验证和测试。最后,使用测试集评估模型性能,计算NER指标。 二、算法介绍 Bert是一种…

Python技巧:如何处理未完成的函数

一、问题的提出 写代码的时候,我们有时候会给某些未完成的函数预留一个空位,等以后有时间再写具体内容。通常,大家会用 pass 或者 ... (省略号)来占位。这种方法虽然能让代码暂时不报错,但可能在调试的时候…

毕业设计 深度学习水果识别

文章目录 1 前言2 开发简介3 识别原理3.1 传统图像识别原理3.2 深度学习水果识别 4 数据集5 部分关键代码5.1 处理训练集的数据结构5.2 模型网络结构5.3 训练模型 6 识别效果 1 前言 Hi,大家好,这里是丹成学长,今天做一个 基于深度学习的水果…

《如何高效学习》

有道云笔记 第一部分 整体性学习策略 结构 结构就像思想中的一座城市,有很多建筑物,建筑物之间有道路相连,有高大而重要的与其他建筑有上百条路相连,无关紧要的建筑只有少数泥泞的小道与外界相通。 建立良好的知识结构就是绘制…

[ 蓝桥 ·算法双周赛 ] 第 19 场 小白入门赛

&#x1f525;博客介绍&#xff1a; EvLast &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 帮助小白快速入门算法竞赛 &#x1f44d…

Golang | Leetcode Golang题解之第457题环形数组是否存在循环

题目&#xff1a; 题解&#xff1a; func circularArrayLoop(nums []int) bool {n : len(nums)next : func(cur int) int {return ((curnums[cur])%n n) % n // 保证返回值在 [0,n) 中}for i, num : range nums {if num 0 {continue}slow, fast : i, next(i)// 判断非零且方…

ARM(5)内存管理单元MMU

一、虚拟地址和物理地址 首先&#xff0c;计算机系统的内存被组成一个由M个连续的字节大小组成的数组。每字节都会有一个唯一的物理地址。CPU访问内存最简单的方式就是使用物理地址。如下图&#xff1a; 图 1 物理地址,物理寻址 而现在都是采用的都是虚拟寻址的方法。CPU生成一…

复习HTML(基础)

目录 HTML含义 HTML作用 HTML的常用元素 元素的特点 元素的分类 1 是否嵌套关系 2 是否独占一行 块元素&#xff1a;独占一行 行内元素&#xff1a;共享一行 行内元素与块级元素的转换 3是否有结束标签 常用标签 1 标题标签&#xff1a;有六级 我们用h1 ~h6 表…

二叉树—相关结构

1.相关的结构问题&#xff08;分治递归&#xff09; 1.1节点个数 1.2叶子结点个数 叶子结点&#xff1a;没有孩子的节点 1.3树的高度&#xff08;深度&#xff09; 1.4二叉树第k层的节点个数 1.5二叉树查找值为x的节点 2.二叉树的创建和销毁 2.1二叉树的构建 二叉树遍历_牛客…

数据结构(7.4_3)——B+树

B树的定义&#xff1a; B树的查找&#xff1a; 查找成功时&#xff1a; 查找失败时&#xff1a; B树和B树的比较 总结&#xff1a;

性能测试学习2:常见的性能测试策略(基准测试/负载测试/稳定性测试/压力测试/并发测试)

一.基准测试 1&#xff09;概念 狭义上讲&#xff1a;就是单用户测试。测试环境确定后&#xff0c;对业务模型中的重要业务做单独的测试&#xff0c;获取单用户运行时的各项性能指标。 广义上&#xff1a;是一种测量和评估软件性能指标的活动。可以在某个时刻通过基准测试建立…

Stable Diffusion绘画 | 来训练属于自己的模型:炼丹启动

经过前面几轮辛苦的准备工作之后&#xff0c;现在开始进入终篇的炼丹环节。 在「上传素材」页面&#xff0c;点击「开始训练」&#xff1a; 可以在「查看进度-进度」中&#xff0c;查看模型训练的整体进度&#xff1a; 求助&#xff01;&#xff01;&#xff01;操作「开始训练…

SkyWalking监控SQL参数

前言 SkyWalking可以记录每个请求中执行的所有SQL&#xff0c;但是默认情况下&#xff0c;SkyWalking不记录SQL参数导致使用起来不是很方便&#xff0c;每次都得看日志才能知道具体的参数。不过SkyWalking提供了一个配置参数&#xff0c;开启后&#xff0c;便可记录SQL执行的参…

MySQL--三大范式(超详解)

目录 一、前言二、三大范式2.1概念2.2第一范式&#xff08;1NF&#xff09;2.3第二范式&#xff08;2NF&#xff09;2.3第三范式&#xff08;3NF&#xff09; 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导&#xff0c;有什么不对的地方&#xff0c;我会及时改进…