前言:基于内网环境中搭建的SSL证书,想要让浏览器识别并信任它,有一步非常重要的操作就是需要用户手动将证书导入到自己的‘受信任根目录’里面去。但是如果处于一个非常庞大的内网环境中,访问我们网站用户是一些不太懂https的角色岗位人员来说。他们可能更需要一个运行即可用的东西。所以我们可以创建一个exe工具或者说是驱动,来将我们的根证书直接导入到‘受信任根目录’里面去。

基于以上思路我用QT编写了一个比较简单工具,导入自签根证书到用户受信任根目录中。实现用户一键即可添加我们自己的CA机构为受信任的CA机构。话不多说直接上核心代码:

int main(int argc, char *argv[])
{UNREFERENCED_PARAMETER(argc);UNREFERENCED_PARAMETER(argv);unsigned char buffer[8192];CRYPT_DATA_BLOB key;key.cbData = 0;key.pbData = buffer;std::wstring wlpstr = this->filePath.toStdWString();LPCWSTR lpcwStr = wlpstr.c_str();HANDLE h = CreateFile(lpcwStr,FILE_GENERIC_READ, 0, NULL,  OPEN_EXISTING, 0, NULL);ReadFile(h, buffer, 8192, &key.cbData, NULL);CloseHandle(h);QString password=QString::fromLocal8Bit("xxxxxx");std::wstring ptr = password.toStdWString();LPCWSTR pStr = ptr.c_str();HCERTSTORE store = PFXImportCertStore(&key, pStr, 0);PCCERT_CONTEXT ctx = CertEnumCertificatesInStore(store, NULL);HCERTSTORE rootStore = CertOpenSystemStore(NULL, L"ROOT");bool isImport=CertAddCertificateContextToStore(rootStore, ctx, CERT_STORE_ADD_REPLACE_EXISTING, NULL);CertCloseStore(store, 0);CertCloseStore(rootStore, 0);QMessageBox::information(this, QString::fromLocal8Bit("成功"), QString::fromLocal8Bit("根证书注册成功"));return 0;
}

以上代码已经展示完了主要功能代码,注意需要使用到静态库: Crypt32.lib 。

效果截图:

到这儿相信聪明的你已经可以独立自主的完成这个工具的编写了,如果你不懂代码不懂c++但你很想拥有这个工具,您可点这儿下载(原创不易,珍惜劳动成果)。

QT编写简易的SSL证书注册工具相关推荐

  1. QT编写简易截图工具

    QT编写简易截图工具 Windows和Linux下编译通过,版本5.9.1 ##设计界面 新建Widget项目,进入ui设计界面,添加QLabel和两个QPushButton,布局如下: Button ...

  2. 服务器证书在注册表上位置,服务器ssl证书注册表

    服务器ssl证书注册表 内容精选 换一换 SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(访问方式为HTTPS),实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄 ...

  3. 【SSL】ssl证书简介、ssl证书生成工具与ssl证书生成步骤

    ssl证书简介.ssl证书生成工具与ssl证书生成步骤 一.ssl证书是什么? 二.ssl证书生成工具有哪些? 2.1.工具一:CFSSL 2.2.工具二:OpenSSL 2.3.工具三:XCA 三. ...

  4. macos 此服务器的证书无效_跨平台本地SSL证书生成工具,本地也能优雅的调试https...

    引言 在Web开发中我们可能会遇到调用后端服务或者Api接口,在某些场景下我们可能需要走https,一般情况下我们会直接放到线上进行这样的测试,对我们的开发造成了很大程度上时间的浪费,因此用上这款神器 ...

  5. JDK自带工具keytool生成ssl证书(web服务https配置)

    原文:https://www.cnblogs.com/zhangzb/p/5200418.html 前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl ...

  6. JDK自带工具keytool生成ssl证书

    前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全. 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具: ...

  7. Qt编写的开源帖子集合(懒人专用)

    回顾自己学习Qt以来九年了,在这九年多时间里面,从本论坛学习不到不少的东西,今天特意整了一下自己开源过的资源的帖子,整理一起方便大家直接跳转下载,不统计不知道,一统计吓一跳,不知不觉开源了这么多代码, ...

  8. 用.NET做DDNS动态域名解析和SSL证书申请

    本文主要介绍 IPv6 配置 DDNS 解析和 SSL 证书申请工具的开发历程和其中的相关知识.工具使用.NET开发,已开源,目前该工具的域名解析只支持阿里云. 文中提及或使用的 .NET 开源项目: ...

  9. 【SSL】SSL 证书级别

    SSL证书,用于加密HTTP协议,也就是HTTPS. SSL 证书级别 分为三种类型,域名型SSL证书(DV SSL).企业型SSL证书(OVSSL).增强型SSL证书(EVSSL) 1. 域名型 S ...

最新文章

  1. 15 个让新手爱不释手的 Python 高级库
  2. 分布式深度学习最佳入门(踩坑)指南
  3. 黄聪:DEDECMS联动调用时提示“你设定了字段为联动类型,但系统中没找到与你定义的字段名相同的联动组名!”...
  4. 数据库学习day_01:SQL的发展和数据库操作相关sql语句
  5. pythonos模块介绍_Python os模块介绍
  6. odoo self.ensure_one()
  7. 《Reids 设计与实现》第十七章 发布与订阅
  8. RelativeLayout相对布局
  9. 【工大SCIR笔记】AAAI 2020 故事结局预测任务上的区分性句子建模
  10. iOS ijkplayer 硬解H265(hevc)4k视频问题解决
  11. [手机分享]黑莓手机7系列分享之——黑莓7290
  12. C++求出200以内的所有质数(素数),并按每行5个输出在屏幕上。
  13. 储存卡误删都能恢复吗?这个方法大家用了都说好
  14. 使用代理爬去微信公众号_Python3WebSpider/9.5-使用代理爬取微信公众号文章.md at master · Lainton/Python3WebSpider · GitHub...
  15. 程序人生 - 如何绘制二维码?
  16. MonoRail学习笔记十:Controller和Url的对应关系
  17. 计算机网络思科平台第四章测验答案
  18. php 怎么远程包含,利用PHP应用程序中的远程文件包含(RFI)并绕过远程URL包含限制...
  19. 说Python已经饱和的人,你一定不懂这个技能
  20. 【AI】Java+Fileupload+JSTL+Face++实现人脸识别系统

热门文章

  1. 电影之记忆4:蝴蝶效应1
  2. 多属性决策模型 matlab代码及例子
  3. HTML JavaScript
  4. xgboost答疑解惑
  5. 简述面向过程与面向过程的思想
  6. 精美五子棋源码c语言,界面非常漂亮的五子棋源代码
  7. 音频编码之opus(一)
  8. 川信计算机组装维护,凉山州中学生技能大赛信息技术类竞赛总结
  9. 16位流水线CPU设计(部分)
  10. 7 openVINO 反光背心和安全帽检测