IdHTTPServer开发https服务器

该篇经验同样适用于DATASNAP和UNIGUI,因为它们都基于INDY10。

1)需要TIdServerIOHandlerSSLOpenSSL控件

2)设置属性

3)OPENSSL生成自签名证书

X.509证书包含三个文件:key,csr,crt。

  • key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
  • csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
  • crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
进OPENSSL目录
cd d:\openssl
 
设置配置文件
set OPENSSL_CONF=openssl.cfg
 
运行openssl
openssl
 
生成服务器的私钥server.key
genrsa -des3 -out server.key 2048
 
用server.key生成一个证书server.csr
生成的csr 文件交给CA机构签名后,形成服务器自己的证书。按照提示,提供服务器证书的相关信息。
req -new -key server.key -out server.csr
 
生成客户端的私钥client.key
genrsa -des3 -out client.key 2048
 
用client.key 生成一个证书
req -new -key client.key -out client.csr
 
生成服务器证书
x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt
 
生成客户端证书
x509 -req -days 36500 -in client.csr -signkey client.key -out client.crt
 
证书格式转换
#IE浏览器需要p12证书,所以需要签发p12证书,用于IE签发:
openssl pkcs12 -export -clcerts -in client.crt -inkeyclient.key -out client.p12
 
#IOS 证书签发格式
openssl x509 -in client.crt -out client.cer
 
#Android 证书签发格式
openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
 
#pem格式证书
openssl pkcs12 -export -in ddmdd_a.pfx -out client.pem
 
 

4)绑定2个端口

  IdHTTPServer1.Bindings.Add.Port := port;    //http port
IdHTTPServer1.Bindings.Add.Port := 6688; //https port

 5)设置证书

IdServerIOHandlerSSLOpenSSL1.SSLOptions.KeyFile:= ExtractFilePath(ParamStr(0)) + 'yn.key';
IdServerIOHandlerSSLOpenSSL1.SSLOptions.CertFile:= ExtractFilePath(ParamStr(0)) + 'yn.crt';
IdServerIOHandlerSSLOpenSSL1.SSLOptions.RootCertFile:= ExtractFilePath(ParamStr(0)) + 'yn.crt';

  6)准备ssleay32.dll和libeay32.dll文件

这2个文件,可以到DELPHI安装目录里面进行全文搜索,有。

中间件和客户端都需要这2个动态库文件。

因此INDY的SSL只支持MSWINDOWS平台,不支持LINUX、IOS、ANDROID平台。

 7)增加事件处理,密码是生成yn.key文件时输入的

procedure TidHttpSvr.IdServerIOHandlerSSLOpenSSL1GetPassword(var Password: string);
begin Password := '123456'; end;

  

IdHTTPServer开发https服务器的更多相关文章

  1. 微信开发 api 需要 https 服务器

    微信开发 api 需要 https 服务器 先建一个环境,本地的 https 服务器. 以下这篇不错,很完整. https://zhuanlan.zhihu.com/p/23640321

  2. 微信小程序开发(6) SSL证书及HTTPS服务器

    1. 域名 在万网购买,略 2. 云服务器 阿里云购买,略 3. 安装lnmp 使用lnmp.org程序,略 4. 申请证书 阿里云-管理控制台-安全(云盾)-证书服务-购买证书证书类型: 免费型DV ...

  3. 开发https应用

    开发https应用 SSL, 或者Secure Socket Layer,是一种允许web浏览器和web服务器通过一个安全的连接进行交流的技术.这意味着将被发送的数据在一端被翻译成密码,传送出去,然后 ...

  4. iOS开发HTTPS实现之信任SSL证书和自签名证书

    iOS开发HTTPS实现之信任SSL证书和自签名证书 转自:http://www.jianshu.com/p/6b9c8bd5005a/comments/5539345 (收录一下供自己学习用的) 字 ...

  5. 其它 搭建https服务器

    原因是这样的,做了个淘宝的数据管理系统(仅供自己使用),然后需要淘宝卖家的生意参谋里面的一些数据,比如实时访客,里面有每个用户搜索什么关键字进来的,这些信息. 自己基于CefSharp开发了一个win ...

  6. 微信支付HTTPS服务器证书验证指引

    1. 背景介绍 2. 常见问题 3. 验证证书 4. 安装证书 背景介绍 微信支付使用HTTPS来保证通信安全, 在HTTPS服务器上部署了由权威机构签发的证书, 用于证明微信支付平台的真实身份. 商 ...

  7. 学习GO第一天,自我感觉可麻利的开干了-GO语言配置、开发、服务器部署

    学习GO第一天,自我感觉可麻利的开干了-GO语言配置.开发.服务器部署 第一步下载 go sdk https://golang.org/dl/ https://storage.googleapis.c ...

  8. VS提示无法连接到已配置的开发web服务器的解决方法

    VS2013每次启动项目调试好好的,今天出现了提示“提示无法连接到已配置的开发web服务器“,使用环境是本地IISExpress,操作系统为windows10,之前也出现过就是重启电脑又好了,这次是刚 ...

  9. 关于搭建HTTPS服务器服务

    关于 HTTPS 的基本原理大家都已经不再陌生,今天和大家说说如何搭建一个支持 HTTPS 的服务端. 服务端的 HTTPS HTTPS 已经几乎成为了当前互联网推荐的通信方式,它能最大化保证信息传输 ...

随机推荐

  1. Python——数据类型公用功能

    1.索引 表示从哪里开始取值. 支持类型 str 列表 dict 不支持类型 int bool a= '1234567' print(a[1:])#指从哪开始读取,1为从1号元素开始.默认为0 pri ...

  2. redis实现的简单令牌桶

    这里给出的令牌桶是以redis单节点或者集群为中间件. 不过, 这里的实现比较简单, 主要提供两个函数, 一个用于消费令牌, 一个用于添加令牌. 这里, 消费令牌和添加令牌都是通过lua来保证原子性. ...

  3. tengine编译安装及nginx高并发内核参数优化

    Tengine Tengine介绍 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性. Tengine的性能和稳定性已经在大型的 ...

  4. JSON空值处理与 StringUtils工具类使用

    JSON 动态查询时,需要的条件本应是null,前端传入的是" " //null转换为"" private static ValueFilter filter ...

  5. Vuex状态管理总结

    一.什么是 Vuex 1.Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 2.Vuex 采用集中式存储和管理应用中所有组件的状态 3.Vuex 应用的核心是 store(仓库)-- 包 ...

  6. MySQL批量修改相同后缀表名

    执行步骤 1.用concat批量生成修改表名的语句 SELECT CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO ', ,locate('_postfi ...

  7. 《hello-world》第九次团队作业:【Beta】Scrum meeting 1

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十三 团队作业9:Beta冲刺与团队项目验收 团队名称 <hello--wor ...

  8. keras模块学习之-目标函数(objectives)笔记

    本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! 目标函数又称损失函数(loss),目的是计算神经网络的输出与样本标记的差的一种方法,如: model = Sequential() ...

  9. Vue钩子函数

    Vue的生命周期函数 beforeCreate:function(){ console.log('1-beforeCreate 初始化之后'); }, created:function(){ cons ...

  10. Mycat简单配置

    最近项目中需要用到Mycat来作为Mysql的分表中间件.所以稍微研究了一下. Mycat使用起来是非常方便,而且最重要的是配置简单,稍显麻烦的就是需要对库中的每一个表都进行配置. 记录一下最重要的几 ...