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. iOS应用状态保存和恢复

    当应用被后台Kill掉的时候希望从后台返回的时候显示进入后台之前的内容 在Appdelegate中设置 - (BOOL)application:(UIApplication *)application ...

  2. JDBC中PreparedStatement相比Statement的好处

    Statement对象: 用于执行不带参数的简单SQL语句: 特点: a. 只执行单条的sql语句: b. 只能执行不带参数的sql语句: c.运行原理的角度,数据库接收到sql语句后需要对该条sql ...

  3. django rest framework的viewset中关于ModelViewset的定义

    ---恢复内容开始--- viewset的关于ModelViewSet的定义是: class ModelViewSet(mixins.CreateModelMixin, mixins.Retrieve ...

  4. 学习python的日常5

    形如__xxx__的变量或者函数名,在python中是有特殊用途的,例如__slots__是为了绑定属性的名称, __len()__方法是为了让class作用于len()函数,很多这样的函数都可以帮忙 ...

  5. 专心学LINUX:CentOS关闭屏幕自动锁定和睡眠

    在VMware中学习CentOS总免不了一直测试.调试,加上看书.刨坛,再转回到CentOS界面时已经被锁定了.看看怎么将这定时锁定取消以免麻烦.虽然可以使用字符终端,但字符终端不便于翻看前面已经发出 ...

  6. C++(三十五) — 运算符重载

    运算符重载的实质:函数重载.除了增加一个关键字 operator 外,与函数重载没有区别,都是通过该类的某个对象来访问重载运算符. (1)重载运算符时,运算符运算顺序和优先级不变,操作数个数不变: ( ...

  7. python---Numpy模块中线性代数运算,统计和数学函数

    NUMPY告一段落,接下来,进入pandas. import numpy as np # Numpy 线性代数运算 # Numpy 统计和数学函数 print('==========计算矩阵与其转置矩 ...

  8. Oracle SQL developer客户端 如何连接已经安装完毕的Oracle服务器端

    对于刚刚安装完毕Oracle数据库后不知道如何链接使用,可参考以下解决方案. Part 1 首先说服务: 如果正确安装Oracle 11g客户端的朋友们注意了,想要Oracle数据库正常启动有如下三个 ...

  9. mysql.jdbc.Driver异常总结

    1.registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web applic ...

  10. 大数据之路week07--day05 (Hive的搭建部署)

    在之前博客中我有记录安装JDK和Hadoop和Mysql的过程,如果还没有安装,请先进行安装配置好,对应的随笔我也提供了百度云下载连接. 安装JDK:   https://www.cnblogs.co ...