Ubuntu 12.04 एक OpenSSL 1.0.1 के साथ आता है, जिसमें पुराने OpenSSL 0.9.8 संस्करण की तुलना में कुछ अलग चूक हैं।
अन्य बातों के अलावा, यदि आप openssl req -newkey rsa:2048
RSA कुंजी बनाने के लिए उपयोग कर रहे हैं, तो आप PKCS # 8 नामक एक प्रारूप में एक कुंजी के साथ समाप्त करेंगे । पीईएम प्रारूप में प्रस्तुत की गई, इन कुंजियों में अधिक सामान्य -----BEGIN PRIVATE KEY-----
हेडर है, जो आपको यह नहीं बताता है कि यह किस तरह (आरएसए, डीएसए, ईसी) कुंजी है।
पहले, OpenSSL 0.9.8 के साथ, चाबियाँ हमेशा PKCS # 1 नामक एक प्रारूप में होती थीं , जिसे PEM के रूप में दर्शाया गया था, जिसमें हेडर था -----BEGIN RSA PRIVATE KEY-----
।
इस वजह से आप केवल हेडर और पाद लेख को बदल नहीं सकते हैं:
-----BEGIN PRIVATE KEY-----
सेवा मेरे
-----BEGIN RSA PRIVATE KEY-----`
यह एक ही बात नहीं है और यह काम नहीं करेगा। इसके बजाय आपको कुंजी का उपयोग करके पुराने प्रारूप में कनवर्ट करना होगा openssl rsa
। ऐशे ही:
openssl rsa -in key_in_pkcs1_or_pkcs8.pem -out key_in_pkcs1.pem
Ubuntu 12.04 पर MySQL (v5.5.35) एक SSL कार्यान्वयन का उपयोग कर रहा है जिसे yaSSL (v2.2.2) कहा जाता है। यह उम्मीद करता है कि चाबियाँ PKCS # 1 प्रारूप में होंगी और OpenSSL 1.0 और नए द्वारा उपयोग किए जाने वाले PKCS # 8 प्रारूप का समर्थन नहीं करता है। यदि आप केवल हेडर और फ़ूटर को बदलते हैं, जैसा कि इस थ्रेड में अन्य पोस्ट द्वारा सुझाया गया है, तो MySQL / yaSSL शिकायत नहीं करेगा, लेकिन आप कनेक्ट करने में असमर्थ होंगे और इसके बजाय इस तरह से एक त्रुटि के साथ समाप्त होगा:
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
Ubuntu 14.04 OpenSSL 1.0.1f और नई सेटिंग्स के साथ आता है। अन्य बातों के अलावा, यह SHA1 के बजाय SHA256 डिजेस्ट के साथ प्रमाण पत्र उत्पन्न करेगा, जिसका उपयोग पहले संस्करणों में किया गया था। गोपनीय रूप से, MySQL के साथ बंडल किया गया yaSSL संस्करण इस बात का समर्थन नहीं करता है।
यदि आप MySQL के साथ उपयोग करने के लिए प्रमाण पत्र उत्पन्न कर रहे हैं, तो सुनिश्चित करें कि RSA कुंजियाँ पारंपरिक PKCS # 1 PEM प्रारूप में परिवर्तित हो गई हैं और यह कि SHA1 डाइजेस्ट का उपयोग कर प्रमाण पत्र बनाए गए हैं।
यहां एक उदाहरण दिया गया है कि कैसे अपना खुद का सीए, एक सर्वर प्रमाणपत्र और एक क्लाइंट प्रमाणपत्र तैयार किया जाए।
# Generate a CA key and certificate with SHA1 digest
openssl genrsa 2048 > ca-key.pem
openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
# Create server key and certficate with SHA1 digest, sign it and convert
# the RSA key from PKCS #8 (OpenSSL 1.0 and newer) to the old PKCS #1 format
openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem
openssl x509 -sha1 -req -in server-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
openssl rsa -in server-key.pem -out server-key.pem
# Create client key and certificate with SHA digest, sign it and convert
# the RSA key from PKCS #8 (OpenSSL 1.0 and newer) to the old PKCS #1 format
openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem > client-req.pem
openssl x509 -sha1 -req -in client-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
openssl rsa -in client-key.pem -out client-key.pem