Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP से MySQL एसएसएल कनेक्शन

यहां PHP (और mysqli_real_connect ) क्लाइंट है सर्वर नहीं। आप इसे mysqli_ssl_set . के साथ कॉन्फ़िगर कर रहे हैं क्लाइंट-प्रमाणपत्र प्रमाणीकरण के लिए (और सर्वर कुंजी और प्रमाणपत्र का उपयोग करके)।

मुझे यकीन नहीं है कि आपने अपने MySQL सर्वर को कैसे कॉन्फ़िगर किया है, लेकिन कॉन्फ़िगरेशन के (MySQL) सर्वर सेक्शन में कुछ ऐसा होना चाहिए:

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

ये वैसे भी क्लाइंट साइड से संबंधित नहीं हैं (केवल CA प्रमाणपत्र करता है, लेकिन निश्चित रूप से सर्वर की निजी कुंजी नहीं)।

एक बार ऐसा करने के बाद, आप यह देखने का प्रयास कर सकते हैं कि कमांड लाइन क्लाइंट का उपयोग करके सर्वर ठीक से कॉन्फ़िगर किया गया है या नहीं:

mysql --ssl-verify-server-cert --ssl-ca=/mysql-ssl-certs/ca-cert.pem --ssl -h hostname ...

या शायद यह (हालांकि सत्यापित करें कि सर्वर प्रमाणपत्र वास्तव में SSL/TLS के उपयोगी होने के लिए सक्षम होना चाहिए)

mysql --ssl-ca=/mysql-ssl-certs/ca-cert.pem --ssl -h hostname ...

यह कम से कम कमांड लाइन पर काम करना चाहिए।

फिर, PHP से, आपको दो विकल्प मिलते हैं:

  • mysqli_ssl_set का उपयोग करें जैसा आपने किया है, लेकिन $key . छोड़कर और $cert शून्य, जब तक कि आप क्लाइंट-प्रमाणपत्र का उपयोग नहीं करना चाहते जो वास्तव में आपके सर्वर प्रमाणपत्र से अलग होना चाहिए। (मुझे याद नहीं है कि यह काम करता है या नहीं।)
  • संभवतः आसान, छोड़ दें mysqli_ssl_set पूरी तरह से और इसे अपनी वैश्विक MySQL क्लाइंट कॉन्फ़िगरेशन फ़ाइल में कॉन्फ़िगर करें (जहां PHP इसे लेने में सक्षम होना चाहिए, संभवतः /etc/mysql/my.cnf , लेकिन यह आपके वितरण के आधार पर भिन्न हो सकता है):

    [client]
    ssl-ca=/mysql-ssl-certs/ca-cert.pem
    

(यह सर्वर कॉन्फिग के समान है, लेकिन क्लाइंट साइड पर/क्लाइंट सेक्शन में।)

प्राधिकरण भाग के लिए (GRANT ):

  • REQUIRE SSL केवल SSL/TLS के उपयोग की आवश्यकता है
  • REQUIRE ISSUER , REQUIRE SUBJECT और REQUIRE X509 क्लाइंट को आवश्यक मानों की तुलना करने के लिए क्लाइंट-प्रमाण पत्र प्रस्तुत करने की आवश्यकता होती है (यही वह स्थिति है जहां आपको ssl-key का उपयोग करने की आवश्यकता होगी और ssl-cert क्लाइंट साइड पर (कॉन्फ़िगर या mysqli_ssl_set . के भीतर) )।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जन्मदिन स्टोर करने के लिए सबसे अच्छा क्षेत्र कौन सा है?

  2. Mysqldump:बैक अप लेने पर इन्सर्ट के लिए कॉलम नाम बनाएं

  3. जेनकींस पाइपलाइन में जेडीबीसी ड्राइवर कैसे जोड़ें?

  4. रेल स्थापना पर रूबी के साथ समस्या - WAMP MySQL स्थापना का उपयोग कैसे करें?

  5. वर्तमान आइटम आईडी के आसपास N पिछला और M अगला आइटम चुनें