当前位置: 首页 > news >正文

cpp-httplib 测试https功能

cpp-httplib 下载

地址

编译 example

g++ redirect.cc -o redirect -I…/ -lpthread -DCPPHTTPLIB_OPENSSL_SUPPORT -lssl -lcrypto

编译如果报错,现在oepnssl版本为1.1,不想升级openssl。进行下面修改:

diff --git a/httplib.h b/httplib.h
index 5e2bbd0..efea3c8 100644
--- a/httplib.h
+++ b/httplib.h
@@ -327,15 +327,6 @@ using socket_t = int;#include <iostream>#include <sstream>-#if defined(OPENSSL_IS_BORINGSSL) || defined(LIBRESSL_VERSION_NUMBER)
-#if OPENSSL_VERSION_NUMBER < 0x1010107f
-#error Please use OpenSSL or a current version of BoringSSL
-#endif
-#define SSL_get1_peer_certificate SSL_get_peer_certificate
-#elif OPENSSL_VERSION_NUMBER < 0x30000000L
-#error Sorry, OpenSSL versions prior to 3.0.0 are not supported
-#endif
-#endif // CPPHTTPLIB_OPENSSL_SUPPORT#ifdef CPPHTTPLIB_ZLIB_SUPPORT
@@ -10274,7 +10265,7 @@ inline bool SSLClient::initialize_ssl(Socket &socket, Error &error) {return false;}-            auto server_cert = SSL_get1_peer_certificate(ssl2);
+            auto server_cert = SSL_get_peer_certificate(ssl2);auto se = detail::scope_exit([&] { X509_free(server_cert); });if (server_cert == nullptr) {
--- a/example/redirect.cc
+++ b/example/redirect.cc
@@ -9,6 +9,7 @@#define SERVER_CERT_FILE "./cert.pem"#define SERVER_PRIVATE_KEY_FILE "./key.pem"
+#define CPPHTTPLIB_OPENSSL_SUPPORT 1using namespace httplib;@@ -16,6 +17,7 @@ int main(void) {// HTTP serverServer http;#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
+       std::cout<<"ssl" <<std::endl;SSLServer https(SERVER_CERT_FILE, SERVER_PRIVATE_KEY_FILE);#endif@@ -47,7 +49,7 @@ int main(void) {auto httpThread = std::thread([&]() { http.listen("localhost", 8080); });#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
-  auto httpsThread = std::thread([&]() { https.listen("localhost", 8081); });
+  auto httpsThread = std::thread([&]() { https.listen("0.0.0.0", 8081); });#endifhttpThread.join();

编译通过

制作证书

证书文件格式有PEM 和 P12(PKCS#12),两种核心功能基本一致,PEM 是文本 ,P12是二进制格式。

生成私钥 (需要输入密码)

openssl genpkey -algorithm RSA -out key.pem -aes256

删除私钥密码

openssl rsa -in key.pem -out key_no_pass.pem

生成证书请求文件

openssl req -new -key key.pem -out server.csr

生成自签名证书 (cert.pem)

openssl x509 -req -days 365 -in server.csr -signkey key.pem -out cert.pem

执行

sudo ./redirect

网页输入ip

在这里插入图片描述

http://www.dtcms.com/a/327070.html

相关文章:

  • 告别数据孤岛!React 路由 3 种传参方法全解析
  • Apache Shiro
  • Gartner 《IAM for LLM-Based AI Agents》学习心得
  • 11. React组件插槽用法
  • 解决 VSCode 无法从右键菜单“通过 Code 打开”文件夹的问题
  • 使用Gradle手搓一个Kotlin/Native项目
  • Nginx 架构和安装
  • Node.js 精选:50 款文件处理与开发环境工具库
  • Mocha在Node.js中的详细使用
  • 阿里云 Windows 服务器 搭建 Gitea 私有 Git 服务器完整教程
  • 云原生高级——nginx
  • 【网站深入seo方法】
  • [论文阅读] (41)JISA24 物联网环境下基于少样本学习的攻击流量分类
  • 记录docker使用kong consul postgresql配置dns异常解决
  • 从零开始手搓一个GPT大语言模型:从理论到实践的完整指南(一)
  • 大数据技术入门精讲(Hadoop+Spark)
  • 数据可视化交互深入理解
  • 五、Elasticsearch在Linux的安装部署
  • 【unity实战】使用Splines+DOTween制作弯曲手牌和抽牌动画效果
  • 计算机网络2-2:物理层下面的传输媒体
  • -bash: ll: 未找到命令
  • 一,设计模式-单例模式
  • 在IDEA中设置SQL解析作用域解决无法解析表的问题(详细图解)
  • 《量子雷达》第1章预习2025.8.12
  • C语言(03)——斐波那契数列的理解和运用(超详细版)
  • 实验-vlan实验
  • C#教程之NPOI读写excel文件XLS,XLSX格式
  • QT第五讲-控件QLineEdit、QSpinBox、QSlider、QScrollBar、QDial、QProgressBar、QLCDNumber
  • MySQL 索引:索引为什么使用 B+树?(详解B树、B+树)
  • 【K8s】K8s控制器——复制集和deployment