কোনও মাইএসকিউএল সার্ভারে কোনও এসএসএল সংযোগ ডিবাগ করার জন্য ওপেনএসএসএল ব্যবহার করা যেতে পারে?


21

আমি চাই আমার ওয়েবসভারটি কোনও এসএসএল সংযোগে মাইএসকিউএল ডাটাবেস সার্ভারের সাথে কথা বলুক। ওয়েবসরভার CentOS5 চালায়, ডাটাবেস সার্ভারটি ফ্রিবিএসডি চালায় runs শংসাপত্রগুলি একটি মধ্যবর্তী সিএ ডিজিকার্ট সরবরাহ করে।

মাইএসকিউএল এসএসএল ব্যবহার করা উচিত, অনুযায়ী my.cnf:

# The MySQL server
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
ssl
ssl-capath = /opt/mysql/pki/CA
ssl-cert = /opt/mysql/pki/server-cert.pem
ssl-key = /opt/mysql/pki/server-key.pem

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

কিন্তু যখন আমি ওয়েব সার্ভার থেকে ডাটাবেস সার্ভারে সংযোগ দেওয়ার চেষ্টা করি, তখন আমি একটি ত্রুটি পেয়েছি:

[root@webserver ~]# mysql -h mysql.example.org -u user -p
ERROR 2026 (HY000): SSL connection error

এবং যদি আমি ওপেনসেল দিয়ে আরও ডিবাগ করার চেষ্টা করি:

[root@webserver ~]# openssl s_client -connect mysql.example.org:3306 0>/dev/null
CONNECTED(00000003)
15706:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:588:

এটি কি কোনও মাইএসকিউএল ডাটাবেস সার্ভারের এসএসএল সংযোগটি পরীক্ষা করার একটি বৈধ উপায়? SSL23_GET_SERVER_HELLO:unknown protocolযেহেতু এই সাধারণত কি আপনি একটি বন্দর অ SSL এর ট্রাফিক জন্য দেয়ার উদ্দেশ্যে করা 'র মধ্যে SSL কথা বলছিল দেখতে হবে বার্তা অদ্ভুত।

এই একই ওপেনসেল কমান্ডটি এলডিএপি এবং এইচটিটিপি সার্ভারগুলির সাথে দুর্দান্ত কাজ করছে বলে মনে হচ্ছে:

$ openssl s_client -connect ldap.example.org:636  0>/dev/null
CONNECTED(00000003)
depth=2 /C=US/O=The Go Daddy Group, Inc./OU=Go Daddy Class 2 Certification Authority
...
$ openssl s_client -connect www.example.org:443  0>/dev/null
CONNECTED(00000003)
depth=0 /DC=org/DC=example/OU=Services/CN=www.example.org

নোট করুন যে আপনি মাইএসকিউএল সার্ভারে এসএসএল ট্র্যাফিক পরিদর্শন করতে ওয়্যারশার্ককেও ব্যবহার করতে পারেন, i.imgur.com/5uTkLqU.png দেখুন
জাইমে হাবলুটজেল

উত্তর:


11

OpenSSL সংস্করণ 1.1.1 জন্য অতিরিক্ত সমর্থন (11 সেপ্টেম্বর 2018 মুক্তি) -starttls mysqlমধ্যে a2d9cfbac5d87b03496d62079aef01c601193b58 কমিট । দুর্ভাগ্যক্রমে আমি ওপেনএসএসএল চেঞ্জলগে এই নতুন বৈশিষ্ট্যের উল্লেখ খুঁজে পাচ্ছি না।

যদি আপনার ডিস্ট্রিবিউশনটিতে এখনও এই সংস্করণটি না থেকে থাকে তবে https://testssl.sh/openssl-1.0.2k-dev-chacha.pm.ipv6.Linux+FreeBSD.tar.gz এ একটি স্ট্যাটিকালি সংকলিত ওপেনসেল বাইনারি রয়েছে যা সমর্থন করে -starttls mysql। আমি http://www.danneman.org/preferencesations/Automating_TLS_Configration_Verifications.pdf এ এর রেফারেন্সটি পেয়েছি ।

উইন্ডোজের জন্য ওপেনএসএসএল ১.১.১ বাইনারিগুলি https://wiki.openssl.org/index.php/ বিনারিগুলিতে পাওয়া যাবে

Https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-files- using-openssl.html এ বর্ণিত হিসাবে আমি SSL শংসাপত্র তৈরি করেছি , চেষ্টা করেছি এবং এটি কাজ করে:

$ echo | bin/openssl.Linux.x86_64.static s_client -starttls mysql -connect spx-bionic.censored.com:3306 -CAfile /tmp/ca.pem
CONNECTED(00000003)
depth=1 C = AU, ST = Some-State, O = Internet Widgits Pty Ltd, CN = mysql test CA
verify return:1
depth=0 C = AU, ST = Some-State, O = Internet Widgits Pty Ltd, CN = spx-bionic.censored.com
verify return:1
---
Certificate chain
 0 s:/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=spx-bionic.censored.com
   i:/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=mysql test CA
 1 s:/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=mysql test CA
   i:/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=mysql test CA
---
Server certificate
-----BEGIN CERTIFICATE-----
CENSORED
-----END CERTIFICATE-----
subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=spx-bionic.censored.com
issuer=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=mysql test CA
---
No client certificate CA names sent
Client Certificate Types: RSA sign, DSA sign, ECDSA sign
Requested Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1
Shared Requested Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1
Peer signing digest: SHA512
Server Temp Key: ECDH, P-521, 521 bits
---
SSL handshake has read 2599 bytes and written 632 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: AD25B7C3018E4715F262188D982AAE141A232712316E0A3292B0C14178E0F505
    Session-ID-ctx: 
    Master-Key: C121967E8FAEC4D0E0157419000660434D415251B0281CCBFC6D7A2AE8B0CC63AEFE22B332E91D31424C1BF03E5AF319
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    0000 - 82 db 03 0f c0 ce f2 26-62 bd 1b 18 71 03 88 db   .......&b...q...
    0010 - a6 66 7c 71 94 0c d5 ec-96 30 46 53 4a e6 cd 76   .f|q.....0FSJ..v
    0020 - 66 b3 22 86 7d 9f 7e 2c-14 1d 66 f2 46 8f d2 d3   f.".}.~,..f.F...
    0030 - f7 0a 0b f5 9e 05 97 e1-2b b3 ba 79 78 16 b8 59   ........+..yx..Y
    0040 - dc c5 0d a8 de 0b 3a df-4b ec f9 73 3f 4c c3 f1   ......:.K..s?L..
    0050 - 86 b6 f7 aa a7 92 84 77-9f 09 b2 cc 5d dd 35 41   .......w....].5A
    0060 - 23 5d 77 74 e1 96 91 ac-28 81 aa 83 fe fc d2 3c   #]wt....(......<
    0070 - f9 23 09 6d 00 e0 da ef-48 69 92 48 54 61 69 e8   .#.m....Hi.HTai.
    0080 - 30 0e 1f 49 7d 08 63 9e-91 70 fc 00 9f cd fe 51   0..I}.c..p.....Q
    0090 - 66 33 61 24 42 8f c2 16-57 54 48 ec 6a 87 dc 50   f3a$B...WTH.j..P

    Start Time: 1537350458
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
DONE

-starttlsওপেনএসএসএল ১.১.১-এ পোস্টগ্রিজ এবং এলডিপ্পের জন্যও সমর্থন রয়েছে। সম্পূর্ণ তালিকার জন্য https://github.com/openssl/openssl/blob/OpenSSL_1_1_1-stable/apps/s_client.c#L815-L831 দেখুন ।


12

আমার নিজের প্রশ্নের উত্তর। ভাল, অনুমোদনমূলক উত্স সহ আপনার আরও ভাল উত্তর থাকলে দয়া করে একটি উত্তর পোস্ট করুন।

সংক্ষিপ্ত উত্তর; না, মাইএসকিউএল এসএসএল সংযোগগুলি ডিবাগ করতে ওপেনএসএসএল ব্যবহার করা যাবে না। এটি কারণ মাইএসকিউএল প্লেইন টেক্সট ব্যবহার করে অধিবেশন শুরু করে এবং পরে এসএসএলে স্যুইচ করে।

Https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_connication_phase.html পড়ার সময় , মাইএসকিউএল একটি প্লেইনেক্সট সংযোগ দিয়ে শুরু হয় এবং তারপরে আসল এসএসএল পরে শুরু করা হয়। এটি ব্যাখ্যা করে যে মাইএসকিউএল প্লেইনেক্সট এবং এনক্রিপ্ট করা সংযোগ উভয়ের জন্য একটি পোর্টে (পোর্ট 3306) শুনতে সক্ষম হয়। এটি একটি এইচটিটিপি বা এলডিএপি সার্ভারের সাথে তুলনা করুন, যেখানে একটি পোর্ট প্লেইনেক্সট সংযোগের জন্য ব্যবহৃত হয় এবং দ্বিতীয় পোর্ট এনক্রিপ্টড সংযোগগুলির জন্য ব্যবহৃত হয়।

এটি ক্লায়েন্টকে সার্ভারের সাথে সংযুক্ত () লিখিতভাবে শুরু হয় যা কোনও ERR প্যাকেট প্রেরণ করতে পারে এবং হ্যান্ডশেকটি শেষ করতে পারে বা প্রাথমিক হ্যান্ডশেক প্যাকেট পাঠাতে পারে যা ক্লায়েন্ট একটি হ্যান্ডশেক রিসপন্স প্যাকেট দিয়ে উত্তর দেয়। এই পর্যায়ে ক্লায়েন্ট এসএসএল সংযোগের জন্য অনুরোধ করতে পারে, সেই ক্ষেত্রে ক্লায়েন্ট তার প্রমাণীকরণের প্রতিক্রিয়া প্রেরণের আগে কোনও এসএসএল যোগাযোগ চ্যানেল প্রতিষ্ঠিত হয়


1
এটি STARTTLS ব্যবহার করার সময় SMTP কীভাবে কাজ করে তা সমান এবং এটি আপনাকে একই পোর্টে এনক্রিপ্ট করা এবং এনক্রিপ্ট করা সংযুক্তি ব্যবহারের অনুমতি দেয়।
সিঙ্ক্রো

এইচ এম, আমি মনে করি যে আচরণের বিষয়ে আমি কথা বলছি তা হল STARTTLS কীভাবে কাজ করে, এন.ইউইউইকিপিডিয়া ডটকম / উইকি / স্টার্টটিএলএস এর মতে ।
স্টিফান লাসিউস্কি

2
মাইএসকিউএল " STARTTLS এর মতো " কাজ করে, এটি আসলে STARTTLS বাস্তবায়িত করে না, কমপক্ষে কোনওভাবেই আমি খুঁজে পেয়েছি যে ওপেনএসএসএল সাফল্যের সাথে ইন্টারঅ্যাক্ট করতে পারে।
ক্রিস্টোফার শুল্টজ 2'18

1

এই সমস্যার একটি সাধারণ কারণ হ'ল সিএ শংসাপত্রের সাধারণ নাম (সিএন) সার্ভার এবং / অথবা ক্লায়েন্ট শংসাপত্রের মতো।

এখানে দেখুন: https://dev.mysql.com/doc/refman/5.6/en/creating-ssl-certs.html

আপনার সিএ এবং শংসাপত্রগুলি পুনরায় তৈরি করার চেষ্টা করুন এবং সমস্ত ক্ষেত্রে একটি অনন্য সিএন ব্যবহার নিশ্চিত করুন।


0

আমি একটি উবুন্টু সার্ভারের সাথে ম্যাকোস এক্স ক্লায়েন্টের সাথে যোগাযোগ করে একটি অচেনা সমস্যা নিয়ে চলেছি।

আপনি যদি ক্লায়েন্টের সাইড শংসাপত্র এবং ক্লায়েন্ট কী বাদ দিয়ে থাকেন তবে সার্ভার শংসাপত্রের জন্য সিএ রাখলে সংযোগটি কাজ করবে কিনা তা আপনি পরীক্ষা করতে পারেন? আপনি কি একটি এনক্রিপ্টড সংযোগ স্থাপন করতে সক্ষম? এটি সাধারণত সম্পর্কিত ব্যবহারকারীর ssl_type কলামের জন্য যে কোনও সেটিংসের প্রয়োজন।


0

কেবল উত্তরসূরিদের জন্য নোট করতে চেয়েছিলেন যে আপনি যদি মাইএসকিউএল এবং ক্লায়েন্টের মধ্যে কোনও লোড ব্যালেন্সার (যেমন একটি F5 বা HAProxy) ব্যবহার করতে চান তবে আপনি মাইএসকিউএল সার্ভারে লোড ব্যালেন্সার থেকে আপনার এসএসএল শংসাপত্রটি আমদানি করতে চান। এটি STARTTLS- এর মতো সংযোগ শুরুর কারণে is

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