我有一个奇怪的要求。我正在尝试与用 C# 编写的服务器通信。它基本上看起来像这样:
SslStream sslStream = new SslStream(client.GetStream(), true,
ValidateServerCertificate,
SelectLocalCertificate);
sslStream.AuthenticateAsServer(_pushCert);
我还有使用 X509 证书并连接到服务器的 C# 示例代码。我也有 cert.pfx 文件的密码。
我想做的是设置某种可以连接到套接字、传输几个字节并接收响应的 shell 脚本。(实际上任何语言,虽然我在看 Python 或 Ruby 或 Perl)
我尝试使用 Python 中的 SSL 包装器,但我收到一条错误消息,指出它们不是服务器/客户端可以交谈的已知算法。
我的 Python 代码示例:
ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = ssl.wrap_socket(ss, ca_certs=CERT, ssl_version=ssl.PROTOCOL_SSLv23 )
#Attempt connection to our server
try:
s.connect((HOST, PORT))
print s
except:
print 'ERROR Connecting'
sys.exit(0)
对于 CERT,我尝试了一些不同的文件:.pfx,以及使用 openssl 从 .pfx 中提取的一些文件。
我也尝试了许多不同的示例(ssl.wrap_socket 的参数)。我也不是很熟悉这些联系。
也许这里有人可以伸出援助之手?
谢谢!