终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名)
升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: 开放、开源、共享。努力打造 .net 社区的一款优秀开源产品。
背景
我在业余时间开发的这个客服系统,有一个问题始终让我饱受困扰,360以及各种国产安全管家十分容易报威胁。即便ESET、卡巴斯基、Windows Defender、小红伞全部一切正常,但360、国产管家就是倔强的报威胁。而这些国产管家的用户基数又很大,非常让人恼火。难道真的必须交保护费吗?
经过长时间的尝试和测试,终于在一定程度上缓解了这个问题(还不敢保证不会再报,继续观察)。
对软件进行数字签名
如果软件被360和国产管家报威胁,可以为其进行数字签名,即使用代码签名证书,用户下载软件时,能通过数字签名验证软件来源,确认软件、代码没有被非法篡改或植入病毒,减少被误报的可能。
Signcode.exe
Signcode.exe 是微软提供的一款用于对代码和软件文件进行数字签名的工具:
- 支持多种文件类型签名:能够对常见的可执行文件(如.exe、.dll、.ocx)、Cabinet 打包文件(.cab)以及目录文件(.cat)等进行数字签名,确保这些文件的完整性和来源可靠性,防止文件被篡改.
- 增强软件安全性和可信度:通过数字签名,用户在下载和运行软件时,可以验证软件是否来自合法的开发者,以及软件在传输过程中是否被修改过,从而提高软件的安全性和可信度,减少用户对未知来源软件的担忧.
- 提供时间戳服务:在签名过程中可添加时间戳,即使代码签名证书过期,只要软件是在证书有效期内签名的,时间戳服务仍能保证该软件的签名在一定时间内继续有效,用户依旧可以放心下载和使用,无需开发者重新对软件进行签名.
生成数字签名证书
生成证书:可以使用 New-SelfSignedCertificate 命令生成自签名证书,例如
New-SelfSignedCertificate -Type Custom -Subject "CN=YourCompanyName" -KeyUsage DigitalSignature -FriendlyName "YourFriendlyName" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") -NotAfter (Get-Date).AddYears(10)
其中CN为证书的主题名称,可根据实际情况修改,此命令会在当前用户的证书存储区生成一个自签名证书.
导出证书:使用 Export-PfxCertificate 命令将证书导出为pfx格式,如
Export-PfxCertificate -cert "Cert:\CurrentUser\My\YourCertificateThumbprint" -FilePath yourcertificate.pfx -Password (ConvertTo-SecureString -String "YourPassword" -Force -AsPlainText)
注意将YourCertificateThumbprint替换为实际的证书指纹,YourPassword替换为设置的密码.
使用 Signtool 签名:找到Signtool.exe工具的路径,一般在 C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool\signtool.exe,打开命令提示符,进入该目录,然后执行签名命令,如
C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool\signtool.exe" sign /f yourcertificate.pfx /p YourPassword /t http://timestamp.digicert.com /v "YourSoftware.exe"
将yourcertificate.pfx、YourPassword和YourSoftware.exe分别替换为实际的证书文件、密码和要签名的软件文件名.
使用 Signcode.exe 工具
制作根证书:在命令提示符中输入
makecert -sv myroot.pvk -ss mysubjectname -n CN=mycompany -r myroot.cer
其中-sv指定私钥文件名,-ss指定主题的证书存储名称,-n指定证书颁发对象,-r指定证书存储位置,回车后设置密码并记住.
制作子证书:输入
makecert -sv test.pvk -iv myroot.pvk -n CN=mycompany -$ commercial -ic myroot.cer test.cer
同样设置并记住密码,此命令中的参数含义与制作根证书类似,只是多了-iv指定根证书的私钥文件和-$指定授权范围.
生成 spc 发行者证书:可选操作,输入
cert2spc test.cer test.spc
可在相应目录下生成test.spc文件.
使用 Signcode 签名:运行 signcode.exe,按照向导依次选择需要签名的文件、证书类型为 “自定义”,然后从文件中选择子证书和私钥文件,并输入相应密码,还可根据需要设置哈希算法、其他证书、数据描述以及时间戳等选项,最后完成数字签名.
注意事项
证书的安全性:制作和使用数字证书时,需妥善保管私钥文件和密码,防止证书被盗用或泄露,以免造成软件被恶意签名或其他安全问题.
准确填写描述信息:填写功能描述和 Web 位置时,必须准确无误且指向证书签名单位网站上有关此软件的介绍页面,否则可能导致证书被吊销.
简介下这个 .net 开发的客服系统
可全天候 7 × 24 小时挂机运行,不掉线不丢消息,欢迎实测。


希望能够打造: 开放、开源、共享。努力打造 .net 社区的一款优秀开源产品。
钟意的话请给个赞支持一下吧,谢谢~
终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名)的更多相关文章
- .net core 和 WPF 开发升讯威在线客服系统:把 .Net Framework 打包进安装程序
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 系列文章目录: https://blog.shengxunwei.com/Home/Post/44a3 ...
- 使用 WPF+ ASP.NET MVC 开发 在线客服系统 (一)
近段时间利用业余时间开发了一套在线客服系统,期间遇到过大大小小不少问题,好在都一一解决,最终效果也还可以,打算写一个系列的文章把开发过程详细的记录下来. 希望能够和更多的开发人员互相交流学习,也希望有 ...
- Linux + .net core 开发升讯威在线客服系统:首个经过实际验证的高性能版本
业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程: .net core 和 WPF 开发升讯威在线客服系统:目录 https://blog.she ...
- 使用 WPF + Chrome 内核实现 在线客服系统 的复合客服端程序
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 免费使用 & 私有化部署免费下载:https://docs.sh ...
- Vue在线客服系统【开源项目】
1. 项目介绍 一个基于Vue2.0的在线客服系统. 技术栈包含:Vue.VueX.Vue Router.Element UI. 2. 功能介绍 项目包含了2个模块:客服端和访客端. 2.1 客服端功 ...
- .net core 和 WPF 开发升讯威在线客服系统【私有化部署免费版】发布
希望 .net 和 WPF 技术时至今日,还能有一些存在感. 这个项目源于2015年前后,当时开发的初版,我使用了 ASP.NET MVC 做为后端,数据库使用原生 ADO.NET 进行操作.WPF ...
- CentOS 30分钟部署 .net core 在线客服系统
前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程.期间有一些朋友希望能够给出 Linux 环境的安装部署指导,本文基于 CentOS 8.3 来安装部署.在本文中我 ...
- Docker 版 3分钟部署 .net core 开源在线客服系统,他来了
我在博客园发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程. 前些天又应朋友的要求,发了一篇 CentOS 版本的安装部署教程:https://www.cnblogs.com ...
- Linux + .net core 开发升讯威在线客服系统:同时支持 SQL Server 和 MySQL 的实现方法
前段时间我发表了一系列文章,开始介绍基于 .net core 的在线客服系统开发过程. 有很多朋友一直提出希望能够支持 MySQL 数据库,考虑到已经有朋友在用 SQL Server,我在升级的过程中 ...
- .net core 和 WPF 开发升讯威在线客服系统:使用本地IP数据库实现访客来源快速定位,支持国外
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 免费使用 & 私有化部署:https://kf.shengxun ...
随机推荐
- JSP+Java编程资源
<JSP+Servlet+Tomcat应用开发从零开始学(第2版)>源码课件视频下载地址: https://pan.baidu.com/s/1HkFRul3wYBxe-skXCoQPwg ...
- 《Vue.js 设计与实现》读书笔记 - 第7章、渲染器的设计
第7章.渲染器的设计 7.1 渲染器与响应系统的结合 渲染器需要有跨平台的能力. 在浏览器端会渲染为真实的 DOM 元素. const { effect, ref } = VueReactivity ...
- /proc/pids/status
/proc/279/status是一个Linux内核中的文件,其中包含了当前进程的状态信息.每行的含义如下: Name: 进程的名称,例如"java"或"bash&quo ...
- 墨天轮访谈 | 腾讯张铭:带你揭秘王者荣耀背后的游戏数据库 TcaplusDB
分享嘉宾:张铭 腾讯数据库专家工程师,TcaplusDB产品负责人 整理:墨天轮社区 导读 大家好,我是腾讯TcaplusDB的产品负责人张铭,TcaplusDB是专为游戏设计的分布式 NoSQL 数 ...
- 前端工程化解决方案webpack使用小结
前端工程化解决方案webpack,模块化.组件化.规范化.自动化,使得前端开发更加高效. 功能:代码压缩混淆.处理浏览器端js的兼容性.以模块化的方式处理项目中的资源 webpack插件:clean- ...
- ios中文件夹文件的创建和删除
//1.文件夹.文件的创建和删除 NSFileManager *fileManager=[NSFileManager defaultManager]; NSString *filePath=@&quo ...
- Python之py9-py9作业检查
目录结构 代码 import os import datetime name_list = [ '赵嘉豪', '巩景云', '李琦', '潘立府', '胡凯琴', '雷俊', '刘闯', '毛毅智', ...
- 东方通信基于 KubeSphere 的云计算落地经验
作者:周峰 吴昌泰 公司简介 东方通信股份有限公司(以下简称"东方通信")创立于 1958 年,是一家集硬件设备.软件.服务为一体的整体解决方案提供商.公司于 1996 年成功改制 ...
- C#多线程编程:AutoResetEvent
作用 简单的完成多线程同步,两个线程共享相同的AutoResetEvent对象.线程可以通过调用AutoResetEvent对象的WaitOne()方法进入等待状态当第二个线程调用Set()方法时,它 ...
- 使用 Cursor 和 Devbox 快速开发基于 Rust 的 WASM 智能合约
本教程以一个智能合约(使用 NEAR 的一个官方 Fungible Tokens 来实现)的例子来介绍一下 Devbox 的强大功能,轻松构建环境,轻松发布. NEAR 是一个去中心化的应用平台,使用 ...