Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何为本地网络上的独立Datasnap Rest服务器创建/安装SSL证书_Delphi_Ssl Certificate_Datasnap - Fatal编程技术网

Delphi 如何为本地网络上的独立Datasnap Rest服务器创建/安装SSL证书

Delphi 如何为本地网络上的独立Datasnap Rest服务器创建/安装SSL证书,delphi,ssl-certificate,datasnap,Delphi,Ssl Certificate,Datasnap,我是SSL和证书采购新手,这是我尝试使用https/SSL制作的第一台datasnap服务器 我有一个独立的Datasnap服务器(XE4),我想创建或获取一个SSL,我可以用它来加密我的rest通信 除了与运行此服务器的计算机关联的IP地址外,没有其他内容 如何获得合适的SSL 我可以购买ip地址的证书吗 最后,我希望使用端口转发将rest查询从internet传递到本地托管服务器。这将如何影响cert流程 谢谢, Mark首先从GoDaddy或RapidSSL等提供商处购买SSL证书。购

我是SSL和证书采购新手,这是我尝试使用https/SSL制作的第一台datasnap服务器

我有一个独立的Datasnap服务器(XE4),我想创建或获取一个SSL,我可以用它来加密我的rest通信

除了与运行此服务器的计算机关联的IP地址外,没有其他内容

  • 如何获得合适的SSL
  • 我可以购买ip地址的证书吗
  • 最后,我希望使用端口转发将rest查询从internet传递到本地托管服务器。这将如何影响cert流程
谢谢,
Mark

首先从GoDaddy或RapidSSL等提供商处购买SSL证书。购买时,请指定证书将代表的域名。显然,通过为您的域配置DNS条目,您可以将域名指向您想要的任何IP地址。我从未将证书配置为指向实际IP地址,但我想这是可能的。如果你想让你的服务器接受来自互联网的请求,我会使用域名,这样你可以根据需要更改IP地址

购买SSL证书时,您需要提供在服务器计算机上生成的证书签名请求(CSR),并指定要使用SSL证书的域名。您可以使用诸如DigiCert util()之类的实用程序来创建CSR

一旦您购买了SSL证书,提供商将提示您下载中间证书文件(或者只是从电子邮件中复制文本,因为它是纯文本文件)。此文件特定于您选择的域名。您还需要从SSL提供程序下载根证书,这是特定于SSL提供程序而不是您的域名的。您需要的第三个文件是私钥文件。您需要再次使用DigiCert实用程序生成此文件。您可以通过将中间证书导入实用程序,然后单击“导出”创建私钥来完成此操作-选择“密钥”格式

例如,现在您有了3个文件(文件名可以是您想要的任何内容):

中间接收阴极射线管
rootcert.crt
私钥

对于Delphi DataSnap,您需要使用TDSCertFiles组件,并使用“CertFiles”属性将其链接到TDSHTTPService组件。在TDSCertFiles组件中,设置以下属性:

CertFile:中间证书文件的路径,例如C:\SSL\intermediatecert.crt
密钥文件:私钥文件的路径,例如C:\SSL\privatekey.key
RootCertFile:指向提供商的根证书文件的路径,例如C:\SSL\rootcert.crt

我不知道XE4,但在XE2中,TDSCertFiles组件有一个bug,这意味着在运行时设置上述3个属性没有任何效果-它只使用在设计时设置的值-请参见:

最后,由于DataSnap使用Indy,Indy使用OpenSSL实现SSL,因此需要将OpenSSL库文件与DataSnap服务器EXE放在同一文件夹中,或者至少放在服务器的路径上。您需要的两个文件是libeay32.dll和ssleay32.dll,您可以在此处下载它们:


希望对您有所帮助。

如果您不想购买商业SSL证书,您可以使用Windows Server证书颁发机构或OpenSSL轻松创建自己的证书。从命令行使用OpenSSL可能会让人望而生畏,XCA()是一个很好的GUI包装器,可以使使用OpenSSL进行证书管理变得简单

您可以创建一个自签名证书,或者创建一个适当的证书链—创建CA,然后使用它生成服务器证书。请记住,证书中的公用名(CN)必须与计算机的完整限定名或IP匹配(但最好分配一个fqdn,并且使用一些名称IP映射,如果您没有DNS,主机文件就足够了)。 证书必须具有正确的属性,但我不知道Datasnap是否正确检查了它们

如果您对认证不熟练,我建议您阅读一些关于认证及其管理的教程。

“Indy使用OpenSSL实现SSL”-更准确地说,OpenSSL是Indy的默认SSL提供商,但Indy实际上并不依赖OpenSSL。您可以使用任何想要的SSL提供程序,只需要一个
TIdSSLIOHandlerSocketBase
派生类来包装它。例如,为其SSL实现提供了一个Indy SSLIOHandler类(在未来的版本中,Indy最终将为Windows上的Microsoft SChannel API提供一个SSLIOHandler类)。现在,在DataSnap的情况下,它使用默认的Indy设置,因此是的,它依赖于OpenSSL。请注意,这样您就不能再访问
qc.embarcadero.com
链接了。如果您需要访问旧的QC数据,请查看。