के माध्यम से ठीक इसी तरीके से मैं अपने एसएसएल प्रमाणपत्र, कुंजी, आदि उत्पन्न है:SSL प्रमाणपत्र, बचत के माध्यम से प्रमाणीकृत करने नहीं, लेकिन ब्राउज़र
openssl genrsa -out server.key 1024
openssl rsa -in server.key -out new_key.pem
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 10000 -in server.csr -signkey new_key.pem -out server.crt
यह काम करता है, मैं क्रोम में उत्पादन देख सकते हैं, हालांकि मैं एक मिल चेतावनी है कि मैं पहले वायरस प्राप्त करने जा रहा हूँ।
openssl s_server -cert server.crt -www -key new_key.pem
यह सर्वर से एक स्निपेट है। मैं ईमानदार हो जाएगा, मुझे यकीन है कि वास्तव में क्या हर पंक्ति कर रही है नहीं कर रहा हूँ हालांकि मैं एक अच्छा विचार है:
socketFactory->server(true); // this is the server
socketFactory->authenticate(false); // no auth?
socketFactory->loadCertificate("server.crt");
socketFactory->loadPrivateKey("new_key.pem");
ग्राहक:
socketFactory->loadTrustedCertificates("server.crt");
socketFactory->authenticate(true); //auth? wierd, right? This guy does this:[1]
[1] http://permalink.gmane.org/gmane.comp.lib.thrift.user/1651
हैं मैं ग्राहक में loadTrustedCertificates
बाहर टिप्पणी है, तो मैं एक SSL असत्यापित प्रमाण पत्र अपवाद मिलता है। कि लाइन के साथ में छोड़ दिया, मैं एक प्रमाणन विफलता अपवाद मिलता है।
यहाँ 2 बहुत लंबे समय तक कोड के टुकड़े, कि बेहतर परिप्रेक्ष्य में ऊपर के टुकड़े डाल दिया है।
सर्वर:
shared_ptr<SkullduggeryHandler> handler(new SkullduggeryHandler());
shared_ptr<TBufferedTransportFactory> transportFactory =
shared_ptr<TBufferedTransportFactory>(new TBufferedTransportFactory());
shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());
shared_ptr<TProcessor> processor(new SkullduggeryProcessor(handler));
shared_ptr<TSSLSocketFactory> socketFactory =
shared_ptr<TSSLSocketFactory>(new TSSLSocketFactory());
socketFactory->server(true);
socketFactory->authenticate(false);
socketFactory->loadCertificate("server.crt");
socketFactory->loadPrivateKey("new_key.pem");
shared_ptr<TSSLServerSocket> socket(new TSSLServerSocket(port, socketFactory));
TThreadedServer server(processor,
socket,
transportFactory,
protocolFactory);
server.serve();
ग्राहक:
shared_ptr <TSSLSocketFactory> socketFactory = shared_ptr<TSSLSocketFactory>(new TSSLSocketFactory());
socketFactory->loadTrustedCertificates("server.crt");
socketFactory->authenticate(false);
shared_ptr <TSSLSocket>socket = socketFactory->createSocket(configuration.ip, configuration.port);
shared_ptr<TBufferedTransport> transport(new TBufferedTransport(socket));
shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
SkullduggeryClient client(protocol);
transport->open();
समय देने के लिए इस पढ़ने के लिए के लिए धन्यवाद। यदि चमकदार त्रुटियां हैं, तो मुझे इसके बारे में सुनकर खुशी होगी। यह बहुत लंबे समय से मेरे अस्तित्व का झुकाव रहा है। बहुत लंबा।