使用 Indy WEB Server 支持 https
之前我在本站有博客文章,详细说明了,如何使用 OpenSSL 程序自己签发证书,用于基于 Indy 的 WebBroker 或者 WebService 程序,然后使用浏览器或者 Delphi 开发的 WebService 客户端去访问,是没问题的。
但是,浏览器还是会提示,这个证书不可信。即便把这个证书,加入到客户端的 WINDOWS 的证书管理里面,也不行。(备注:网上有文章说,把证书导入到 WINDOWS 里面,浏览器的地址栏就变绿了,不会显示不可信的红色,但是我这里没有成功)。
今天发现,我的 WIN10 电脑上运行 WebService 的客户端去访问自签名证书的服务器没问题,在 WIN7 电脑上反倒不行,跟踪了一下,服务器端(基于 Indy)提示一堆异常,基本上判断是客户端的问题。给客户端电脑(WIN7)导入自己签发的证书,问题没有解决。在客户端电脑使用浏览器去访问,自然也是提示不可信证书,强行让它访问,浏览器倒是可以出现页面。
为了解决这个问题,试了一下腾讯签发的免费证书。
操作:
1. 去腾讯申请免费证书。申请过程很简单,页面入口自己上网一搜就有了;你必须要有一个自己的域名。假设我这里输入的域名是 myDomainName.net.
2. 证书申请成功后,下载证书,是一个 ZIP 文件;
3. 这个 ZIP 包里面有 IIS, APACHE 等目录,里面的文件估计是给对应的 WEB SERVER 使用的,不用管它。我这里是使用 INDY 这个 WEB SERVER;
4. 这个 ZIP 包里面,有 3 个文件:
4.1. myDomainName.net.csr;
4.2. myDomainName.net.key
4.3. myDomainName.net.pem
5. 对于 Indy 来说,它需要3个文件:证书,根证书,以及 key;这里,证书和根证书,都使用 myDomainName.net.pem,不能使用 myDomain.Name.net.csr。
代码如下:
IdServerIOHandlerSSLOpenSSL1.SSLOptions.CertFile := TPath.Combine(Self.GetMyPath, 'MyDomainName.net.pem');
IdServerIOHandlerSSLOpenSSL1.SSLOptions.KeyFile := TPath.Combine(Self.GetMyPath, 'MyDomainName.net.key');
IdServerIOHandlerSSLOpenSSL1.SSLOptions.RootCertFile := TPath.Combine(Self.GetMyPath, 'MyDomainName.net.pem');
6. 这里的 IdServerIOHandlerSSLOpenSSL1 是拖到界面上的控件。这个控件是 Indy 带来用于支持 SSL 的控件。设置它的一些参数,比如上述代码,指定它需要的证书文件等等,然后把它和 Indy 的 WebServer 绑定。绑定的代码:
FServer: TIdHTTPWebBrokerBridge;FServer.IOHandler := IdServerIOHandlerSSLOpenSSL1;
7. 这个 IdServerIOHandlerSSLOpenSSL1 在设计期,打开属性面板,设置其它属性:
7.1. IdServerIOHandlerSSLOpenSSL1.SSLVersions 里面的各个版本全打勾,只有 sslvSSLv23无法打勾(设计期,无法勾上);
7.2. IdServerIOHandlerSSLOpenSSL1.SSLOptions.VerifyMode := [];
7.3. IdServerIOHandlerSSLOpenSSL1.SSLOptions.VerifyDepth := 0;
8. 做完上述设置,这个服务器编译运行,就支持 https 访问了。
9. 测试:服务器运行,打开浏览器,地址栏输入 https://127.0.0.1:8080 结果浏览器提示不安全,提示信息是这个证书的域名和当前浏览器访问的域名不同。把 Windows 的 host 文件拿出来,增加一条域名解析:127.0.0.1 myDomainName.net ,然后在浏览器里面使用 https://myDomainName.net:8080 访问,成功,浏览器不再提示不安全,浏览器地址栏也不显示红色了。
10. 做了上述 host 域名解析设置后,使用 Delphi 开发的 WebService 客户端去访问 myDomainName.net 结果阻塞,可能是域名解析不成功导致。直接使用 127.0.0.1 去访问,成功。之前使用自己签发的证书,则使用 127.0.0.1 去访问是不成功的(再次说明:在 WIN10 上是成功的,在 WIN7 上不成功)。
结论:
基于 Indy 开发的 WebServer (比如 WebBroker 程序) 或者 WebService 服务器端程序,加载从腾讯申请的证书,可以让浏览器做 https 访问的时候,成功验证通过。
使用 Indy WEB Server 支持 https相关推荐
- web Server支持 perl
最近使用DCMTK 安装worklist 需要用到webserver支持perl. DCMTK官方建议用NCSA Httpd1.5来安装webserver,但是这个软件一般用在Unix/Linux上, ...
- 使用nmap查看web服务支持的http methods
安装nmap yum install nmap 查看web server支持的http methods u02 ~]$ nmap -p 443 --script http-methods www.so ...
- 使用C#开发HTTP服务器之支持HTTPS
各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com.本文是"使用C#开发HTTP服务器"系列的第六篇文章,在这个系列文章 ...
- goahead如何使用cgi服务_GoAhead Web Server的特性及技术
最近一段时间,一直在搞嵌入式开发,公司一产品需要升级改造,结果发现应用的是Linux平台和GoAhead的web服务器,所以经过多方的了解,现把总结内容总结一下,大家一起和我来学习GoAhead吧. ...
- web server大全之GoAhead移植(转载)
转自:http://linux.chinaunix.net/techdoc/develop/2009/06/19/1119124.shtml 注:最近在做goAhead web server和移植其到 ...
- Nginx负载均衡:分布式/热备Web Server的搭建
Nginx是一款轻量级的Web server/反向代理server及电子邮件(IMAP/POP3)代理server.并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开 ...
- how tomcat works 1 simple web server
2019独角兽企业重金招聘Python工程师标准>>> HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式. 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径. ...
- TurboMail邮件系统支持HTTPS双向认证
2019独角兽企业重金招聘Python工程师标准>>> HTTP单向认证已经被普遍应用,而对企业邮箱安全保密要求更加严格的企事业单位,例如国家保密局等单位,为了达到闭环的安全加密要求 ...
- 实战:Nginx + FastCGI 程序(C/C++) 搭建高性能web server
1.介绍 Nginx - 高性能web server,这个不用多说了,大家都知道. FastCGI程序 - 常驻型CGI程序,它是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程 ...
最新文章
- 顺时针打印矩阵 python
- mysql 负载 查看_Mysql-命令查询当前正在负载运行的SQL语句
- 关于PHP 使用 unset 销毁变量 但是 没有销毁内存的 记录
- java数组元素相加_数组元素相加
- SAP Netweaver的负载均衡消息服务器 vs CloudFoundry的App Router
- python 按键精灵识图_利用-百度云通用文字识别-图片转文字
- SWOT分析是神马?
- 【.NET框架】—— ASP.NET MVC5路由基础(五)
- 浅析概率中的频率学派观点和贝叶斯学派观点
- spring集合quartz获取所有定时任务的下次时间
- Menu菜单资源Android
- 19个程序员接私活平台汇总升级版!你有技术就有钱!
- Linux 录屏软件有哪些?
- H3C nqa 配置
- MAC安装Charles破解版简易教程
- poi实现word转html
- Bitmap毛边问题
- 印象派绘画在现代艺术发展中的地位和作用
- ubuntu18.04中文输入法(by搜狗)
- 浅谈SAP公有云:S4 HANA Cloud
热门文章
- discuz 头像html5上传,discuz更新H5头像上传
- c语言微课名称大全,微课在高职《C语言程序设计》课程中的初探
- 小学教师计算机培训课程感言,小学教师信息技术课程学习心得体会
- ARM GPU mali系列产品规划图或天梯图
- 遗传算法(Python) #5 用DEAP框架解决OneMax问题
- maven3.0.4学习笔记(三)-坐标
- 《CWNA官方学习指南(第3版):认证无线网络管理员PW0-105》
- 利用搜索引擎来搜索特定网站中的关键词
- 一台ubuntu服务器不慎将kernal 删除,恢复过程
- xorbootuefi添加linux,XORBOOTUefi-官方版-XORBOOTUefi(多系统启动工具)0.0.2官方版-独木成林...