[C++] cpphttplib使用https而不是http

前言

首先我们假设是直接使用 httplib.h 的源文件。

支持 https

在这里插入图片描述
根据readme来看,需要开启一个宏,链接libssl和libcrypto就可以了。

下载openssl

保姆级OpenSSL下载及安装教程 选择非light的版本,这样才会有头文件和lib库引入文件。
编写CMakeLists.txt狠狠的链接一下库文件和引入头文件包含目录(本文只是简单测试一下)

target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE "C:/Program Files/OpenSSL-Win64/include")
target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE "C:/Program Files/OpenSSL-Win64/lib/VC/x64/MDd")
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE libcrypto.lib libssl.lib)

生成私匙和证书

什么是 .pem 文件?在 SSL 中导航其创建、使用和转换
注意在生成证书时如果需要填写信息时遇到 COMMON NAME 填写服务器的ip地址,请将私匙和证书都弄成pem格式。

int main()
{httplib::SSLServer server("D:/cazhengshu1/certificate.pem","D:/cazhengshu1/private.pem");server.Get("/image", onGetImage);server.Get("/index.html", onIndex);bool ret = server.listen("192.168.110.173", 8030);if(ret){std::cout << "bind successed" << std::endl;}else{std::cout << "bind failed" << std::endl;}return 0;
}

此时使用https就可以了,但是因为是自签名证书,其实效果比http的效果还要差,谷歌浏览器也直接阻止浏览器访问网址,就算用户选择继续访问,也有明显的标识来指出该网站是不安全的。

导出证书以及让浏览器(Google)信任该证书

  1. 新建一个文件 http.ext
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName[ SubjectAlternativeName ]
IP.1=127.0.0.1
IP.2=192.168.199.104	# 内网访问的IP地址

重新生成证书文件

openssl x509 -req -in csr.csr -signkey private.key -out certificate.pem -extfile http.ext

在代码中使用该文件
在谷歌浏览器打开网址,导出该证书以der模式,然后在安装到电脑即可,随后必须要清理浏览器缓存
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
即可。

结算画面

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32的太阳跟踪系统设计

引言 本项目基于STM32微控制器设计了一个智能太阳跟踪系统&#xff0c;通过集成光敏传感器模块和电机控制系统&#xff0c;实现太阳能电池板的自动调节&#xff0c;以保持太阳能电池板始终垂直对准太阳&#xff0c;从而最大化光能的吸收效率。该系统通过实时监测太阳光的方向&…

一:Linux学习笔记(第一阶段)-- 安装软件 vmware workstation 虚拟机软件 centos系统

目录 学习计划&#xff1a; 资源准备 虚拟机软件&#xff1a;就别自己找了 现在换网站了 下载比较费劲 Centos8&#xff1a; 阿里云镜像地址下载&#xff08;下载比较版 但是有不同版本&#xff09;&#xff1a;centos安装包下载_开源镜像站-阿里云 百度网盘地址&#xff…

代码随想录-字符串-实现strStr()--KMP

题目描述 思路:典型的数据结构中的KMP算法实现 代码与解析 假设两个字符串长度分别为m和n&#xff0c;暴力解则为O(m*n) 引入KMP算法降低时间复杂度&#xff0c;求next数组是O(m) 遍历匹配串是O(n) KMP关键思路 ①求出模式串的next数组&#xff0c;即最长公共前后缀的长度…

unity3d————叉乘练习题

代码示例&#xff1a; public class text: MonoBehaviour {public Transform A;public Transform B;private float dotResult;private Vector3 crossResult;void Update(){dotResult Vector3.Dot(A.forward, B.position - A.position);crossResult Vector3.Cross(A.forward,…

【VSCode插件推荐】想准时下班,你需要codemoss的帮助,分享AI写代码的愉快体验,附详细安装教程

在快节奏的开发环境中&#xff0c;如何高效地完成工作、提高生产力&#xff0c;成为了每位开发者的追求。今天&#xff0c;我将为大家介绍一款强大的VSCode插件——CodeMoss&#xff0c;它不仅能帮助你提高编程效率&#xff0c;还能让你享受到AI写代码的乐趣。 AI 问答&#xf…

[复健计划][紫书]Chapter 7 暴力求解法

7.1 简单枚举 例7-1 Division uva725 输入正整数n&#xff0c;按从小到大的顺序输出所有形如abcde/fghij n的表达式&#xff0c;其中a&#xff5e;j恰好为数字0&#xff5e;9的一个排列&#xff08;可以有前导0&#xff09;&#xff0c;2≤n≤79。枚举fghij&#xff0c;验证a…

【大数据技术基础 | 实验七】HBase实验:部署HBase

文章目录 一、实验目的二、实验要求三、实验原理四、实验环境五、实验内容和步骤&#xff08;一&#xff09;验证Hadoop和ZooKeeper已启动&#xff08;二&#xff09;修改HBase配置文件&#xff08;三&#xff09;启动并验证HBase 六、实验结果七、实验心得 一、实验目的 掌握…

硬件知识10 线性稳压电源——二极管稳压、射级跟随器稳压、集成电路稳压

目录 一、相关理论 二、二极管稳压电路 1、理论与计算 2、不足 三、射级跟随器稳压电路 四、集成电路稳压器 1、78 79系列 2、LM317 LM337系列 3、功耗计算 一、相关理论 前文已进行了AC到DC的转换&#xff0c;只不过这个DC效果一般&#xff0c;因此需要用到稳压&…

查询引擎的演变之旅 | OceanBase原理解读

在关系型数据库中&#xff0c;查询调度器与计划执行器&#xff0c;有着与查询优化器同样重要的地位&#xff0c;随着计算机硬件技术的飞速进步&#xff0c;这两大模块的重要性日益凸显&#xff0c;成为提升数据库性能的关键所在。接下来&#xff0c;本文将由来自 OceanBase 的技…

【MFC编程(一)】MFC概述

文章目录 MFC概述MFC组成MFC对比Windows APIMFC类库基类CObject命令发送类CCmdTarget应用程序结构类应用程序线程支持类CWinThread/CWinApp文档类CDocument文档模板类CDocTemplate 窗口类窗口基类CWnd边框窗口类CFrameWnd视图类CView MFC概述 MFC&#xff08;Microsoft Founda…

深度学习基础—循环神经网络的梯度消失与解决

引言 深度学习基础—循环神经网络&#xff08;RNN&#xff09;https://blog.csdn.net/sniper_fandc/article/details/143417972?fromshareblogdetail&sharetypeblogdetail&sharerId143417972&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link深…

并查集算法详解

文章目录 并查集概念并查集的常见操作构建并查集合并并查集和查找 关于find函数 并查集概念 并查集&#xff08;Union-Find&#xff09;是一种树型的数据结构&#xff0c;用于处理一些不交集的合并及查询问题。其主要应用是判断两个元素是否在同一个集合中&#xff0c;以及合并…

新书速览|Java网络爬虫精解与实践

《Java网络爬虫精解与实践》 本书内容 《Java网络爬虫精解与实践》全面而系统地介绍与网络爬虫程序相关的理论知识&#xff0c;并包含大量的实践操作案例。 《Java网络爬虫精解与实践》共分为 8 章。第 1 章以自动化框架为基础&#xff0c;介绍网络爬虫程序的入门开发实践。第…

多模态大模型微调实践!PAI+LLaMA Factory搭建AI导游

一、引言 AI的快速发展推动了各行各业的智能化转型和创新&#xff0c;随之而来的是对AI应用的迫切需求。 如何微调大模型、高效搭建AI应用成为了开发者们广泛关注的技术方向。阿里云人工智能平台PAI&#xff0c;联合开源低代码大模型微调框架LLaMA Factory &#xff0c;共同打…

提升安全上网体验:Windows 11 启用 DOH(阿里公共DNS)

文章目录 阿里公共 DNS 介绍免费开通云解析 DNS 服务Windows 编辑 DNS 设置配置 IPv4配置 IPv6 路由器配置 DNS 阿里公共 DNS 介绍 https://alidns.com/ 免费开通云解析 DNS 服务 https://dnsnext.console.aliyun.com/pubDNS 开通服务后&#xff0c;获取 DOH 模板&#xff0…

[C语言]strstr函数的使用和模拟实现

1.strstr函数的使用 char * strstr ( const char *str1, const char * str2); 返回一个指向str1中str2第一次出现的指针&#xff0c;如果str2中没有str1则返回 NULL。。 实例&#xff1a; #include <stdio.h> #include <string.h> int main() {char str[] "…

【HTML】——VSCode 基本使用入门和常见操作

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 零&#xff1a;HTML开发工具VSCode的使用 1&#xff1a;创建项目 2&#xff1a;创建格式模板&#x…

区块链的安全性与透明性:Web3如何重塑信任机制

在数字化时代的浪潮中&#xff0c;信任机制的建立显得尤为重要。随着Web3的崛起&#xff0c;区块链技术以其独特的安全性与透明性&#xff0c;正在重塑我们对信任的理解。区块链不仅为去中心化的互联网架构提供了基础&#xff0c;还通过加密技术和分布式账本&#xff0c;实现了…

[OS] Assignment 3-VM

虚拟机设置 虚拟机登录与使用说明 因为项目3基于 xv6 系统运行&#xff0c;它需要一系列支持工具链。我们已经为您准备好了所有必要的环境。 我们提供了 CSC3150_a3_xv6.ova 文件供 x64 架构 用户使用&#xff08;可以导入到 VirtualBox 或 VMware 中&#xff09;&#xff0…

Redis 位图实现签到之长时间未签到预警

#目前通行系统项目中有一个新需求【通过对通行记录数据定时分析&#xff0c;查询出长时间没 有刷卡/刷脸通行的学生】 #一看到通行签到相关&#xff0c;就想到了redis的位图&#xff0c;理由也有很多帖子说明了&#xff0c;最大优点占用空间小。 一.redis命令行 SETBIT&#…