মাইএসকিউএলে এসএসএল সক্ষম করা


24

আমি উবুন্টু সার্ভার 12.04 চালাচ্ছি এবং আমি মাইএসকিউএলে এসএসএল সংযোগ সক্ষম করতে চাই।

আমি ওপেনএসএসএল সহ নিম্নলিখিত কীগুলি / শংসাপত্রগুলি ফাইল তৈরি করেছি:

  • CA-cert.pem
  • সার্ভার-cert.pem
  • সার্ভার-key.pem

আমি এগুলিতে সংরক্ষণ করেছি /etc/mysql, তারপরে নিম্নলিখিত লাইনগুলি যুক্ত করেছি /etc/mysql/my.cnf:

ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

এরপরে, আমি সার্ভারটি পুনরায় চালু করেছি sudo service restart mysql

তবে এটি এসএসএল সক্ষম করে বলে মনে হচ্ছে না। একটি mysql অধিবেশন মধ্যে:

mysql> show variables like '%ssl%';
+---------------+----------------------------+
| Variable_name | Value                      |
+---------------+----------------------------+
| have_openssl  | DISABLED                   |
| have_ssl      | DISABLED                   |
| ssl_ca        | /etc/mysql/ca-cert.pem     |
| ssl_capath    |                            |
| ssl_cert      | /etc/mysql/server-cert.pem |
| ssl_cipher    |                            |
| ssl_key       | /etc/mysql/server-key.pem  |
+---------------+----------------------------+

আমি কি অনুপস্থিত কোন ধারণা? ধন্যবাদ


2
এই দুর্দান্ত থ্রেডটি দেখুন ... সম্ভবত এটি আপনাকে সহায়তা করতে পারে।
স্যারচার্লো

স্যারচার্লো লিঙ্কটির জন্য ধন্যবাদ, তবে সেই থ্রেডে সম্বোধিত বিষয়টি আমার অবস্থার সাথে প্রযোজ্য বলে মনে হচ্ছে না।
দর্শক93746

1
@ সিরচার্লো যা উল্লেখ করেছেন তা হল যেখানে আপনি দেখতে চান। বিশেষত অ্যাপারমোর অংশ এবং পোস্ট # 10 । আমি ডেবিয়ান স্কিজে বা কোনও পুরানো উবুন্টুতে দুর্দান্ত কী তৈরি করেছি - 12.04-এ পুনরায় জেনারেট করা এটিকে আবার ব্যর্থ করে তোলে। মাইএসকিউএল ত্রুটি লগগুলিও দেখুন।
gertvdijk

2
আমার এই একই প্রশ্ন ছিল এবং এটিতে কয়েক ঘন্টা সময় ব্যয় করেছি, কিন্তু @ ব্যবহারকারী262116 এর উত্তর এটি সমাধান করেছে। আমি আপনাকে উত্তর যদি এটি সাহায্য করে উত্সাহিত করব!
elixenide

উত্তর:


33

উবুন্টু 12.04 একটি ওপেনএসএসএল 1.0.1 এর সাথে আসে, যা পুরানো ওপেনএসএসএল 0.9.8 সংস্করণের চেয়ে কিছুটা আলাদা ডিফল্ট রয়েছে।

অন্যান্য জিনিসের মধ্যে, আপনি যদি openssl req -newkey rsa:2048আরএসএ কী তৈরি করতে ব্যবহার করেন তবে আপনার পিকেসিএস # 8 নামক ফর্ম্যাটে একটি কী দিয়ে শেষ হবে । পিইএম ফর্ম্যাটে প্রতিনিধিত্ব করা হয়েছে, এই কীগুলির আরও জেনেরিক -----BEGIN PRIVATE KEY-----শিরোনাম রয়েছে, যা আপনাকে কোন ধরণের (আরএসএ, ডিএসএ, ইসি) কী তা আপনাকে জানায় না।

পূর্বে, ওপেনএসএসএল 0.9.8 এর সাথে কীগুলি সর্বদা পিকেসিএস # 1 নামক ফর্ম্যাটে থাকত , যা পিইএম হিসাবে উপস্থাপন করা হয় , শিরোনামটি ছিল -----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

উবুন্টু 12.04-এ মাইএসকিউএল (v5.5.35) yaSSL (v2.2.2) নামক একটি এসএসএল বাস্তবায়ন ব্যবহার করছে। এটি কীগুলি পিকেসিএস # 1 ফর্ম্যাটে থাকবে এবং ওপেনএসএসএল 1.0 এবং আরও নতুন ব্যবহৃত পিকেসিএস # 8 ফর্ম্যাটটিকে সমর্থন করে না। যদি আপনি কেবল এই থ্রেডের অন্যান্য পোস্টের পরামর্শ অনুসারে শিরোনাম এবং পাদচরণগুলি পরিবর্তন করেন তবে মাইএসকিউএল / ইয়াসএসএল অভিযোগ করবেন না, তবে আপনি সংযোগ করতে পারবেন না এবং এর পরিবর্তে এই জাতীয় একটি ত্রুটি শেষ করতে পারেন:

ERROR 2026 (HY000): SSL connection error: protocol version mismatch

উবুন্টু 14.04 ওপেনএসএসএল 1.0.1f এবং নতুন সেটিংস সহ আসে। অন্যান্য জিনিসের মধ্যে এটি SHA1 এর পরিবর্তে SHA256 হজমে শংসাপত্র তৈরি করবে যা পূর্ববর্তী সংস্করণগুলিতে ব্যবহৃত হয়েছিল। অজানাভাবে, মাইএসকিউএল এর সাথে বান্ডিল করা ইয়াসএসএল সংস্করণ এটিকে সমর্থন করে না।

আপনি যদি মাইএসকিউএল দিয়ে ব্যবহারের জন্য শংসাপত্র তৈরি করে থাকেন তবে মনে রাখবেন যে আরএসএ কীগুলি theতিহ্যবাহী পিকেসিএস # 1 পিইএম ফর্ম্যাটে রূপান্তরিত হয়েছে এবং শংসাপত্রগুলি 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

1
এই পোস্টটি আমার জন্য দিনটি বাঁচায়! কল্পনাপ্রসূত ব্যাখ্যা এবং সমাধান।
জেনারেলপিনিয়ন

আমি পেয়েছি 'ERROR 2026 (HY000): এসএসএল সংযোগ ত্রুটি: এএসএন: ভবিষ্যতে তারিখের আগে'
নিতসন বালেলি

দুর্ভাগ্যক্রমে, আমি এখনও ERROR 2026 (HY000): SSL connection error: protocol version mismatchত্রুটিগুলি পেয়েছি (ওপেনএসএসএল 1.0.1f ব্যবহার করে)। আমি ওপেনএসএসএল 1.0.1e এ স্যুইচ করেছি এবং এটি উপরের নির্দেশাবলীর সাথে কাজ করেছে।
জেরেট

2
এই উত্তরটি আশ্চর্যজনক - যদি আমি পারতাম তবে প্রচুর পরিমাণে অনুদান দিত। সমস্যার দুর্দান্ত ব্যাখ্যা।
elixenide

আরও একটি ভয়েস জোড় যোগ করতে। মাইএসকিউএল ডকুমেন্টেড সেট আপ কেন কাজ করবে না - তার একটি সমাধান সন্ধানের জন্য ইন্টারনেট ট্রল করে চলেছে - এই পোস্টের নীচের অংশটি আমার দিনটি পুরোপুরি বাঁচিয়েছে।
স্টিভ চেম্বারস

4

এটি আমাকে সহায়তা করেছে:

ফাইল সার্ভার- key.pem এর শিরোনাম এবং পাদচরণটি এমন দেখাচ্ছে:

-----BEGIN PRIVATE KEY-----
...
...
-----END PRIVATE KEY-----

তবে এর মতো কিছু দরকার:

-----BEGIN RSA PRIVATE KEY-----
...
...
-----END RSA PRIVATE KEY-----

বিগইন আরএসএ প্রাইভেট কী নোট করুন

লগ দেখার জন্য:

sudo vim /var/log/mysql/error.log

আশাকরি এটা সাহায্য করবে.


আমার উবুনবতু 12.04 তে আমার একই রকম সমস্যা ছিল মাইএসকিএল 5.5.34 এর সাথে, যেখানে পেম ফাইলগুলি সকলের দ্বারা পঠনযোগ্য ছিল এবং এখনও আমাকে একই সমস্যা দিয়েছে। কিন্তু এই উত্তরটি মালিক পরিবর্তনের সাথে মিলিত করে কৌশলটি করেছে।
টমি অ্যান্ডারসন

ম্যানুয়ালি "আরএসএ" যুক্ত করবেন না - এটি কেবল ত্রুটিটি দমন করবে, তবে এসএসএল কাজ করবে না (আপনি অন্য একটি ত্রুটি পাবেন, " এসএসএল সংযোগ ত্রুটি: প্রোটোকল সংস্করণ মিল নেই ")। পরিবর্তে openssl rsa
পিকেসিএস

3

12.04-এ আমার একই সমস্যা হয়েছিল তবে এটি প্রকৃতপক্ষে সমস্যা যা সমস্যার সৃষ্টি করেছিল।

আমি উবুন্টু ফোরামগুলিতে একটি সমাধান পেয়েছি , এটি সমাধান করে .pemফাইলগুলি সরিয়ে নিয়েছি /etc/mysql

আপনি এ্যাপারমোর কনফিগারেশন এও পরিবর্তন করতে পারবেন /etc/apparmor.d/usr.sbin.mysqld


আমারও সমস্যা ছিল
জোনাথন

এটা কি টাইপো? আপনি কি "পেম ফাইলগুলিকে সরিয়ে" পরিবর্তে "পেম ফাইলগুলিতে" স্থানান্তরিত করতে চান? এত
প্যাড্যান্ট

1

নিশ্চিত হয়ে নিন যে মাইএসকিএলডি প্রক্রিয়াটি চালিত ব্যবহারকারী কী এবং শংসাপত্রের ফাইলগুলির অ্যাক্সেস পড়েছেন। আপনি যদি "মাইএসকিএল" অ্যাকাউন্টটি ব্যবহার করে মাইএসকিউএল চালু করেন তবে আপনি:

/etc/mysql$ chown mysql:mysql *.pem
/etc/mysql$ ls -l *.pem
-rwxrwx--- 1 mysql mysql 1631 2013-09-16 14:27 ca-cert.pem
-rwxrwx--- 1 mysql mysql 1281 2013-09-16 14:27 server-cert.pem
-rwxrwx--- 1 mysql mysql 1679 2013-09-16 14:27 server-key.pem

অন্যথায়, আপনি আপনার ত্রুটি লগতে নিম্নলিখিত পেতে পারেন:

SSL error: Unable to get certificate from '/etc/mysql/server-cert.pem'
130916 13:32:25 [Warning] Failed to setup SSL
130916 13:32:25 [Warning] SSL error: Unable to get certificate

গ্রেট। তবে কীভাবে এটি করা যায়? একটি সময় নিন এবং আরও তথ্য দিয়ে আরও ব্যাখ্যা করুন :)
লুসিও

এটি সার্ভার-key.pem ফাইলে আরএসএ যুক্ত করার কৌশলটি করেছে।
টমি অ্যান্ডারসন

1

উবুন্টু ১.0.০৪-এ আমি দৌড়েছি mysql_ssl_rsa_setup, প্রশ্নের মতোই শো ভেরিয়েবলগুলিতে ফাইলগুলি দেখতে পেলাম, have_sslএবং তা have_opensslঅবিরত থাকবে DISABLED

সমাধান ছিল chown mysql.mysql /var/lib/mysql/*.pem। বিকল্পভাবে, আমি ধরে নিই যে আপনি mysql_ssl_rsa_setup mysql ব্যবহারকারী হিসাবে চালনা করেন, এটি সঠিক অনুমতি নিয়ে ফাইলগুলি তৈরি করবে।


প্রশ্নটি চার বছর এবং দুই মাস পুরাতন ... এটি সম্ভবত আপনার উত্তরটির উত্তর দেয় না unlikely
WinEunuuchs2 ইউনিক্স

1
আমি এটিকে ভবিষ্যতের পাঠকদের জন্য সহজ পরিষেবা হিসাবে পোস্ট করেছি কারণ এটি এই সমস্যার জন্য শীর্ষস্থানীয় গুগল অনুসন্ধান ফলাফলগুলির মধ্যে একটি এবং যা আমি পড়েছি তা আমার সমস্যার সমাধান করতে সহায়তা করে না। উবুন্টু ১২.০৪ এবং এমনকি ১৪.০৪-এ বিশ্বের রাষ্ট্রের উল্লেখ করে এই উত্তরের মান প্রাসঙ্গিকতা হারাচ্ছে।
ক্রেগ রাইট

@ WinEunuuchs2Unix হয়তো ওপি নয়, তবে আমি এখানে আছি, প্রায় দুই বছর পরে ঠিক এই উত্তরটি খুঁজছি। তো, ক্রেগকে ধন্যবাদ!
ওল্ডস্কুল

0

ব্যক্তিগত কী ফাইলটির মতো দেখতে হবে (পিকেসিএস # 1 ফর্ম্যাট):

-----BEGIN RSA PRIVATE KEY-----
. . .
-----END RSA PRIVATE KEY-----

যদি এর পরিবর্তে আপনার ব্যক্তিগত কী শুরু হয়:

-----BEGIN PRIVATE KEY-----

(পিকেসিএস # 8 ফর্ম্যাট), তারপরে আপনার এটিকে রূপান্তর করা উচিত :

openssl rsa -in server-key.pem -out server-key.pem

হাতে হাতে "অনুপস্থিত" " RSA" ট্যাগটি ম্যানুয়ালি যুক্ত করবেন না , কারণ ফর্ম্যাটটি আলাদা।


-1

এসএসএল স্টার্টআপ বিকল্পগুলি আপনার মাই সিএনএফ ফাইলের শীর্ষের কাছাকাছি হওয়া উচিত বা সেগুলি উপেক্ষা করা যেতে পারে। আরএসইএল 6.4 যেখানে এসএসএল ভেরিয়েবলগুলি উপেক্ষা করা হচ্ছে, সেখানে আমার সিএসএল 5.6 চালাতে আমার সমস্যা হয়েছিল, আমার আমার সিএনএফ ফাইলের শেষে ছিল। আমি এগুলিকে ফাইলের শীর্ষে স্থানান্তরিত করেছি (ঠিক [mysqld] এর নীচে) তারপরে আমি সার্ভারটি পুনরায় চালু করেছি এবং সবকিছু ঠিক আছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.