Kar*_*n L 7 .net c# ssl tls1.2
我制作了一个应该接受SSL连接的程序.我希望它只接受TLS 1.2来提高安全性.
为此,我已经在Windows 7 Professional SP1 pc上使用Visual Studio 2015 express安装了.net framework 4.6并编译了SW.VS中"应用程序"下的目标框架已设置为4.6
在SW我使用SslStream方法验证证书,并确保只使用TLS 1.2,我输入行
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
Run Code Online (Sandbox Code Playgroud)
我尝试main()在创建新SSL流时和之前插入此行
对于测试我使用openssl连接,使用命令:
openssl s_client -connect 10.0.0.101:1400 -tls1_2 -cert MyCert.pem -key private.pem -CAfile entrust.cer
我的问题是C#程序得到以下异常:
例外:对SSPI的调用失败,请参阅内部异常.
内部异常:不支持请求的功能
OpenSsl的输出是
CONNECTED(00000150)7964:错误:1408F10B:SSL例程:SSL3_GET_RECORD:版本号错误:.\ ssl\s3_pkt.c:362:
没有可用的对等证书
没有发送客户端证书CA名称
SSLL握手读取5个字节并写入7个字节
新的,(无),密码是(无)安全重新协商不受支持压缩:无扩展:无否ALPN协商SSL会话:协议:TLSv1.2密码:0000会话ID:会话ID-ctx:主密钥:Key-Arg:无PSK标识:无PSK标识提示:无SRP用户名:无开始时间:1457011106超时:7200(秒)验证返回码:0(ok)
如果我使用-tls1没有问题,所以我认为这是因为.net SslStream不支持tls1_2(或tls1_1)
有没有人可以解释我做错了什么
/卡斯滕
Eri*_*ric 14
ServicePointManager安装程序将修复Web调用(例如使用WebClient),但对于SslStream,您需要更多.您需要在调用AuthenticateAsClient时提供可接受的安全协议.而不是
sslStream.AuthenticateAsClient(hostname);
Run Code Online (Sandbox Code Playgroud)
做这个
sslStream.AuthenticateAsClient(hostname, null, SslProtocols.Tls12, true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5964 次 |
| 最近记录: |