个人项目简单https服务配置

news/2024/10/4 15:06:48 标签: https, 网络协议, http
http://www.w3.org/2000/svg" style="display: none;">

1.SSL简介

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

1.特点

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

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

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

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

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

2.类型

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

2.SSL证书的申请获取

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

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

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

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

  2. 选择需要申请的整数类型(这里个人测试证书可以免费试用三个月,如果是个人练习推荐使用)。
    https>https://i-blog.csdnimg.cn/direct/ab5cfd68bcc1421aa56940a3438e154d.png#pic_center" alt="在这里插入图片描述" />

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

  • 这里的服务器域名需要填写自己的自己购买的域名(注意: 某些免费试用的域名是无法申请ssl证书的,这里建议直接买个)阿里云域名
  • 这里我们是要配置自己的网站服务,就需要选择“DV域名验证”。
    https>https://i-blog.csdnimg.cn/direct/9f01e54bb8624ff98b2638e118c5e0a3.png#pic_center" alt="在这里插入图片描述" />
  1. 选择好之后点击“立即购买”按钮,然后选择“确认订单”,支付成功后即可申请ssl证书。
  2. 申请通过之后就可以在“ssl证书管理”中看到自己的证书。点击进去就会弹出证书的详情,点击“下载”按钮即可下载到本地。 以下介绍一下下载文件的类型:
    https>https://i-blog.csdnimg.cn/direct/c42b558ace494773941f42faf8a9c18e.png#pic_center" alt="在这里插入图片描述" />
文件类型描述
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>https服务。
我们后端是使用express框架,在express中配置https>https服务比较简单。如果没有express框架可以使用如下命令创建一个express项目:

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

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

npm install
npm install https>https --save

https>https_77">2. 配置https>https服务

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

const https>https = require('https>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>https服务器选项
const credentials = { cert: certificate, ca: certificateChain, key: privateKey };

// 床加你https>https服务
const  server = https>https.createServer(credentials,app);

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

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

前端配置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>https
server {
    listen 80;
    server_name your_domain.com;
    return 301 服务器域名;
}

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


http://www.niftyadmin.cn/n/5690062.html

相关文章

【C++掌中宝】从std的角度来进一步了解命名空间

文章目录 前言1. 什么是命名空间&#xff08;namespace&#xff09;&#xff1f;2. \<iostream\>和\<iostream.h\>的区别3. C命名空间的三种使用方式3.1 直接指定标识符3.2 使用 using 关键字3.3 使用 using namespace std 4. 为什么避免使用 using namespace std5…

腾讯云技术深度解析:从微服务到AI编程助手的应用实践

腾讯云技术深度解析&#xff1a;从微服务到AI编程助手的应用实践 在当今云计算技术日新月异的时代&#xff0c;腾讯云作为业界领先的云服务提供商&#xff0c;不断推出创新技术和解决方案&#xff0c;助力企业数字化转型。本文将深入探讨腾讯云在微服务架构、中间件以及AI编程…

螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习06(Docker网络连接)

如果要搭建基于docker的私人DC&#xff0c;除了虚拟机网络连接外&#xff0c;就得掌握docker的网络连接。磨刀不误砍柴工&#xff0c;或者说工欲善其事必先利其器&#xff0c;我们先学学典型的docker的网络连接方式。Docker的网络连接有四种&#xff1a;bridge、none、containe…

【LeetCode】动态规划—931. 下降路径最小和(附完整Python/C++代码)

动态规划—931. 下降路径最小和 前言题目描述基本思路1. 问题定义2. 理解问题和递推关系3. 解决方法3.1 动态规划方法3.2 空间优化的动态规划 4. 进一步优化4.1 空间复杂度优化 5. 小总结 代码实现Python3代码实现Python 代码解释C代码实现C 代码解释 总结: 前言 在算法的学习…

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

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

深度学习数据增强的常用方法

以下是在深度学习中经常使用的图像增强的方法 目录 前言 1、加噪声 2、调整亮度 3、cutout 4、旋转 5、对比度增强 6、仿射变化扩充图像 7、HSV数据增强 8、错切变化扩充图像 9、平移扩充图像&#xff0c;根图像移动的像素距离可自行调整&#xff0c;具体方法如下注释所示 10、…

【2022工业3D异常检测文献】AST: 基于归一化流的双射性产生不对称学生-教师异常检测方法

Asymmetric Student-Teacher Networks for Industrial Anomaly Detection 1、Background 所谓的学生-教师网络&#xff0c;首先&#xff0c;对教师进行训练&#xff0c;以学习语义嵌入的辅助性训练任务&#xff1b;其次&#xff0c;训练学生以匹配教师的输出。主要目的是让学生…

java线程池参数设置原则

线程池参数设置原则 1 如何为线程池设置合适的线程参数&#xff1f; 目前根据一些开源框架&#xff0c;设置多少个线程数量通常是根据应用的类型**&#xff1a;I/O 密集型、CPU 密集型。** I/O密集型 I/O密集型的场景在开发中比较常见&#xff0c;比如像 MySQL数据库读写、文…