मान लें कि आपके पास पहले से ही MySQL सर्वर के लिए CA प्रमाणपत्र सेटअप है (जो कि Amazon RDS का उपयोग करते समय होता है), यह काम करने के लिए कुछ चरण हैं।
सबसे पहले, CA प्रमाणपत्र को कीटूल
, जो JDK के साथ आता है। इस मामले में कीस्टोर में वे सभी सीए प्रमाणपत्र होंगे जिन पर हम भरोसा करना चाहते हैं। Amazon RDS के लिए, CA प्रमाणपत्र यहां
पाया जा सकता है . mysql-ssl-ca-cert.pem
. के साथ अपनी कार्यशील निर्देशिका में, आप निम्न आदेश चला सकते हैं:
keytool -import -alias mysqlServerCACert -file mysql-ssl-ca-cert.pem -keystore truststore.jks
जो truststore.jks
called नाम की एक नई Java KeyStore फाइल बनाएगा आपको KeyStore पासवर्ड दर्ज करने के लिए संकेत देने के बाद और यह पूछने के बाद कि क्या आप प्रमाणपत्र पर भरोसा करना चाहते हैं (हाँ, आप करते हैं)। यदि आपके पास पहले से ही एक ट्रस्टस्टोर फ़ाइल है, तो आप truststore.jks
की जगह उसी कमांड को चला सकते हैं। अपने मौजूदा KeyStore के पथ के साथ (इसके बजाय आपको मौजूदा KeyStore के पासवर्ड के लिए संकेत दिया जाएगा)। मैं आमतौर पर truststore.jks
डालता हूं मेरे conf
. में निर्देशिका।
दूसरा, application.conf
. में आपको डेटाबेस URL में कुछ JDBC URL पैरामीटर जोड़ने होंगे:
verifyServerCertificate=true
- यदि होस्ट प्रमाणपत्र सत्यापित नहीं किया जा सकता है तो कनेक्ट करने से मना करें।
useSSL=true
- एसएसएल का उपयोग करके कनेक्ट करें।
requireSSL=true
- अगर MySQL सर्वर SSL का समर्थन नहीं करता है तो कनेक्ट करने से मना करें।
उदाहरण के लिए, यदि आपका वर्तमान डेटाबेस URL है:
db.default.url="jdbc:mysql://url.to.database/test_db"
तो यह अब होना चाहिए:
db.default.url="jdbc:mysql://url.to.database/test_db?verifyServerCertificate=true&useSSL=true&requireSSL=true"
अंत में, कुछ कमांड-लाइन विकल्प हैं जिन्हें ट्रस्टस्टोर को कॉन्फ़िगर करने के लिए Play सर्वर को प्रारंभ करते समय पारित करने की आवश्यकता होती है MySQL-Connector/J उपयोग करेगा। मेरे truststore.jks
. को मानते हुए फ़ाइल conf
. में स्थित है निर्देशिका, और पासवर्ड है password
, मैं अपना सर्वर (देव मोड में) इस तरह से शुरू करूंगा:
activator run -Djavax.net.ssl.trustStore="conf/truststore.jks" -Djavax.net.ssl.trustStorePassword="password"
इसके अलावा, मैं यह भी सुनिश्चित करना चाहता हूं कि एसएसएल का उपयोग किए बिना डेटाबेस से जुड़ना असंभव है, बस अगर विकल्प किसी तरह आवेदन स्तर पर गड़बड़ हो जाते हैं। उदाहरण के लिए यदि db.default.user=root
, फिर जब root
. के रूप में लॉग इन किया जाता है MySQL सर्वर में, निम्न क्वेरी चलाएँ:
GRANT USAGE ON *.* TO 'root'@'%' REQUIRE SSL;
FLUSH PRIVILEGES;