SuperSocket学习进展 下载本文

type=\SuperSocket.SocketEngine\

serverType=\SuperSocket.Facility\

ip=\ receiveBufferSize=\ maxConnectionNumber=\

policyFile=\ clearIdleSession=\

提示:server节点的配置属性policyFile的值为你的策略文件的存放路径。

在SuperSocket中启用TLS/SSL传输层加密

关键字: TLS, SSL, 传输层加密, 传输层安全, 证书使用, X509Certificate

SuperSocket 支持传输层加密(TLS/SSL)

SuperSocket 有自动的对TLS/SSL的支持,你可以无须增加或者修改任何代码,就能让你的服务器支持TLS/SSL。

想要为你的 SuperSocket 服务器启用 TLS/SSL,你需要先准备好一个授权证书

你有两种方式提供证书:

1.一个带有私钥的 X509 证书文件 你可以通过 CertificateCreator in

SuperSocket(http://supersocket.codeplex.com/releases/view/59311) 生成证书文件用于测试

在生产环境,你应该向证书颁发机构购买证书 2.一个在你本地证书仓库的证书

通过证书文件启用 TLS/SSL

你需要通过下面的步骤修改配置文件来使用你准备好的证书文件: 在server节点设置security属性; 在server节点下增加certificate子节点; 最后配置应该像这样:

serverTypeName=\ ip=\ security=\

提示: certificate节点的password属性的值是这个证书文件的私钥 还有一个可选的配置选项 \用于证书加载:

keyStorageFlags=\你可以通过阅读下面这篇MSDN文章了解关于这个选项的更多信息:

http://msdn.microsoft.com/zh-cn/library/system.security.cryptography.x509certificates.x509keystorageflags(v=vs.110).aspx

通过本地证书仓库的证书来启用 TLS/SSL

你也可以通过本地证书仓库的证书,而不是使用一个物理文件。 你只需要在配置中设置你要使用的证书的storeName和thumbprint:

serverTypeName=\ ip=\ security=\

thumbprint=\?f42585bceed2cb049ef4a3c6d0ad572a6699f6f3\ 其他可选参数:

storeLocation - CurrentUser, LocalMachine

thumbprint=\?f42585bceed2cb049ef4a3c6d0ad572a6699f6f3\ storeLocation=\

你也可以只为服务器实例的其中一个监听启用TLS/SSL,而其它监听仍然使用明文传输。

thumbprint=\?f42585bceed2cb049ef4a3c6d0ad572a6699f6f3\

客户端安全证书验证

在 TLS/SSL 安全通信中, 客户端的安全证书不是必需的, 但是有些系统需要更高级别的安全保障. 此功能允许你在服务器端验证客户端证书.

首先, 要启用客户端证书验证, 你需要在配置中的证书节点增加新的属性 \

storeLocation=\ clientCertificateRequired=\

thumbprint=\?f42585bceed2cb049ef4a3c6d0ad572a6699f6f3\

然后你需要重写 AppServer 的方法 \用于实现你的验证逻辑:

protected override bool ValidateClientCertificate(YourSession session, object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)

{

//Check sslPolicyErrors

//Check certificate

//Return checking result return true; }