私には奇妙な要求があります。私はC#で書かれたサーバと通信しようとしています。PythonまたはRubyまたはPerlを使用した.NET Sslstream x.509ソケットへの接続
SslStream sslStream = new SslStream(client.GetStream(), true,
ValidateServerCertificate,
SelectLocalCertificate);
sslStream.AuthenticateAsServer(_pushCert);
私もX509証明書を使用してサーバに接続するのC#のコード例を持っている:それは基本的にこのようになります。私はcert.pfxファイルのパスワードも持っています。
私がしたいのは、ソケットに接続して数バイトを送信して応答を受け取ることのできる何らかのシェルスクリプトをセットアップすることです。
私はPythonからSSLラッパーを使ってみましたが、サーバー/クライアントが話すアルゴリズムが知られていないというエラーが表示されます。私のPythonコードの
例:CERTのために
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)
私はいくつかの異なるfilee試してみました:.PFXを、そしていくつかは、OpenSSLを使用して.PFXから抽出されました。
多くの異なる例も試しました(ssl.wrap_socketの引数)。私はこれらの接続にも慣れていません。
おそらく誰かが手を貸すことができますか?
ありがとうございます!
サーバーは、クライアントではなくサーバーの秘密キーにアクセスする必要があります。 –
私が使用したCert(.pfx)は、このサーバーに接続するC#クライアントからのものでした。「例外的な」エラーは、「クライアントとサーバーが共通のアルゴリズムを持っていないため通信できません」 – Chris
AuthenticateAsServerがデフォルトでSSL 3.0またはTLS 1.0を使用していて、PythonコードがSSL 2または3を使用しているようです。だから、彼らは* SSL 3.0(すべての実装がサポートしなければならない一連のアルゴリズムを指定しています)に同意すべきです。私はここで失敗の唯一の可能な点は証明書であると言います。別のものを試してみてください。 ([makecert.exe](http://msdn.microsoft.com/en-us/library/bfsktky3 \(v = VS.100 \).aspx)を使用して、自己署名証明書を簡単に作成できます。 – dtb