如此处所述 http://www.ddj.com/cpp/184401688
我没有时间从头开始写这篇文章。
被问及没有回答 https://stackoverflow.com/questions/434961/implementing-ssl
问题是:
我正在寻找一些可实现MS SSPI的可编译的工作源代码(如上面的线程中所提到的),程序性而不是OOP首选。
我在这里查看了代码项目示例:
http://www.codeproject.com/KB/IP/sslclasses.aspx
但这是C#OOP。将其转换为C ++代码并非易事。
OpenSSL的
SChannel调用遵循GSS API标准。当然,还有一些替代方案 - 例如OpenSSL。这个包是一个完整而彻底的协议实现,对于熟悉UNIX的人来说无疑是最好的选择。该软件包最初针对UNIX社区,并且编译它依赖于Perl运行时,因此从未使用过UNIX类型系统的Windows开发人员需要一些学习曲线。
除此之外,OpenSLL做了一些非标准的事情
尼古拉 已经包含了很多可编译的源代码 (www.coastrd.com) 我希望找到愿意这样做的人。
答案 0 :(得分:23)
此SSPI SChannel SMTPS示例应该按原样在Visual Studio 2008中编译和运行
http://www.coastrd.com/c-schannel-smtp
SChannel是包含SSL / TLS协议的GSS API的Microsoft实现。
利用SChannel的优势:
代码应生成如下所示的会话:
----- SSPI初始化
----- WinSock初始化
-----证书初始化
-----连接到服务器
发送的70字节握手数据
收到974字节的握手数据
发送的182字节握手数据
收到43字节的握手数据
握手成功了
-----进行客户握手
-----服务器凭证认证
服务器主题:C = US,S =加州,L =山景,O = Google Inc,CN = smtp.gmail.com
服务器发行者:C = ZA,S =西开普省,L =开普敦,O = Thawte Consulting cc,OU =认证服务部门,CN = Thawte Premium Server CA,E = premium-server @ thawte.com
-----证书链显示
-----服务器证书已验证
-----发布服务器证书上下文
协议:TLS1
密码:RC4
密码强度:128
哈希:MD5
哈希强度:128
密钥交换:RSA
密钥交换强度:1024
-----安全连接信息
收到64字节(加密)的应用程序数据
解密数据:43字节
220 mx.google.com ESMTP 6sm17740567yxg.66
发送7个字节的明文:
EHLO
发送的28字节加密数据
收到169字节(加密)的应用程序数据
解密数据:148字节
250-mx.google.com为您服务,[22.33.111.222]
250-SIZE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN
250 ENHANCEDSTATUSCODES
250 PIPELINING
发送7个字节的明文:
退出
发送的28字节加密数据
收到69字节(加密)的应用程序数据
解密数据:48字节
221 2.0.0关闭连接6sm17740567yxg.66
----- SMTP会话完成
发送关闭通知
发送了23个字节的握手数据
-----与服务器断开连接
-----开始清理
-----全部完成-----
答案 1 :(得分:5)
在我之后重复:“我想使用OpenSSL”。
这个问题太严重了,而且每次想要解决问题时都很容易搞砸。如果您遇到OpenSSL问题,请尝试通过OpenSSL的对话和补丁来解决这个问题。
(没有人可以免于搞砸,甚至微软,或者甚至是OpenSSL。请使用可以查看的内容,以及在出现问题时修补的内容。使用OpenSSL。)
答案 2 :(得分:5)
也许this link是一个很好的起点。它包含使用MS SSPI的实际工作示例代码(虽然它看起来非常具有MSVC,但确定,它的窗口无论如何)。只需忽略OpenSSL示例; - )
答案 3 :(得分:0)
您为此类可编辑的工作源代码支付多少费用?或者你有没有想到有人会把它给你? OpenSSL的人已经做到了。这是丑陋的,但价格合适。