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

使用C#写的HTTPS简易服务器

由于监控网络之用,需要写一个https服务器。
由于用到https,因此还需一个域名证书,可以免费申请,也可以用一个现有的。
接下来还需在Windows上安装证书,注册证书。

安装证书

找到证书,点击,一路安装即可。

注册证书

查询证书

certutil -store my

查询结果

================ 证书 1 ================
序列号: 52fa907d41a8439c403d2d9e97453da8
颁发者: CN=XinChaCha Trust OV CA, O=Beijing Xinchacha Credit Management Co., Ltd., C=CNNotBefore: 2024/12/20 8:00NotAfter: 2025/12/21 7:59
使用者: CN=*.cdut.edu.cn, O=成都理工大学, S=四川省, C=CN
非根证书
证书哈希(sha1): 48c0f63170597f65c566903ac4b3e176828a03d4密钥容器 = {318BC6DA-F81A-42CB-BAD8-9CF8ECC96560}唯一容器名称: 74750d459b9e33bdb358fe76f9cc6fe9_73d663f3-bf98-4bb1-a62b-794087b69f98提供程序 = Microsoft Enhanced Cryptographic Provider v1.0
私钥不能导出
通过了加密测试
CertUtil: -store 命令成功完成。

记录下“证书哈希(sha1)”值:48c0f63170597f65c566903ac4b3e176828a03d4

注册证书

netsh http add sslcert ipport=0.0.0.0:8443 certhash=48c0f63170597f65c566903ac4b3e176828a03d4 appid={12345678-1234-1234-1234-123456789012}

替换 certhash。
appid,就是一个guid,只要不重复就好了。

编写测试代码

 static void Main(string[] args){// 证书路径和密码string certificatePath = "FullSSL.pfx";string certificatePassword = "12345";// 创建证书对象X509Certificate2 certificate = new X509Certificate2(certificatePath, certificatePassword);// 创建HttpListenerHttpListener listener = new HttpListener();// 添加HTTPS前缀(注意:需要在系统上注册此URL)listener.Prefixes.Add("https://+:8443/");// 启动监听listener.Start();Console.WriteLine("Listening on https://+:8443/");// 处理请求while (true){HttpListenerContext context = listener.GetContext();HttpListenerRequest request = context.Request;HttpListenerResponse response = context.Response;// 读取请求信息Console.WriteLine($"Request from {request.RemoteEndPoint}");//遍历headersforeach (string key in request.Headers.AllKeys){Console.WriteLine($"{key}: {request.Headers[key]}");}Console.WriteLine($"Method: {request.HttpMethod}");Console.WriteLine($"URL: {request.Url}");// 创建响应byte[] buffer = Encoding.UTF8.GetBytes("Hello, this is an HTTPS server!");response.ContentLength64 = buffer.Length;response.OutputStream.Write(buffer, 0, buffer.Length);// 关闭响应response.Close();}}

测试

C:\Users\Zmrbak>curl -k https://127.0.0.1:8443/
Hello, this is an HTTPS server!

这里需要加参数 -k,否则由于证书和域名不匹配导致无法继续。

相关文章:

  • Rest Client插件写http文件直接发送请求
  • 深度解析:基于卷积神经网络的宠物识别
  • Feign 深度解析:Java 声明式 HTTP 客户端的终极指南
  • Linux操作系统--进程程序替换and做一个简单的shell
  • Node.js 模块导入的基本流程
  • 【操作系统间文件共享_Samba】一、Samba 技术基础与核心功能剖析​
  • Python爬虫从入门到实战详细版教程
  • 【leetcode100】零钱兑换
  • list底层原理
  • Python基础知识语法归纳总结(数据类型-2)
  • 调和平均数通俗易懂的解释以及为什么这样定义,有什么用
  • Git ——提交至github,Vercel拉取,更新不了项目的问题解决
  • redis数据类型-基数统计HyperLogLog
  • 典籍知识问答典籍查询界面前端界面设计效果实现
  • C# byte[]字节数组常用的一些操作。
  • 实战交易策略 篇十七:翻倍黑马交易策略
  • npm的基本使用安装所有包,安装删除指定版本的包,配置命名别名
  • 解决方案 | 晶尊微智能马桶着座感应模块
  • nodejs的包管理工具介绍,npm的介绍和安装,npm的初始化包 ,搜索包,下载安装包
  • Git远程操作
  • 航海王亚洲巡展、工厂店直销……上海多区推出“五五购物节”活动
  • 小核酸药物企业瑞博生物递表港交所,去年亏损2.81亿元
  • 中央网信办:重点整治违规AI产品、利用AI制作发布谣言等突出问题
  • 俄宣布停火三天,外交部:希望各方继续通过对话谈判解决危机
  • 王毅:妥协退缩只会让霸凌者得寸进尺
  • 新造古镇丨上海古镇朱家角一年接待164万境外游客,凭啥?