উদাহরণ সহ SSL/TLS দিয়ে RMI Communication

RMI এবং SSL/TLS Security - জাভা আরএমআই (Java RMI) - Java Technologies

303

SSL/TLS হল একটি সুরক্ষিত যোগাযোগ প্রোটোকল, যা জাভা RMI (Remote Method Invocation) যোগাযোগে ডেটা এনক্রিপ্ট করে নিরাপত্তা প্রদান করে। RMI-তে SSL/TLS ব্যবহার করলে ক্লায়েন্ট এবং সার্ভারের মধ্যে সংবেদনশীল ডেটা সুরক্ষিত রাখা যায়।


SSL/TLS সহ RMI Communication এর ধাপসমূহ

১. কীস্টোর এবং ট্রাস্টস্টোর তৈরি করুন

কীস্টোর তৈরি করুন (সার্ভার সাইড):
keytool -genkeypair -alias rmiserver -keyalg RSA -keystore server.keystore -storepass password
ট্রাস্টস্টোর তৈরি করুন (ক্লায়েন্ট সাইড):
keytool -export -alias rmiserver -file server.cer -keystore server.keystore -storepass password
keytool -import -alias rmiserver -file server.cer -keystore client.truststore -storepass password

২. সার্ভার কোড (SSL/TLS সক্রিয় করা)

import javax.net.ssl.SSLServerSocketFactory;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.RMIServerSocketFactory;
import java.rmi.server.UnicastRemoteObject;

// Remote Interface
public interface Calculator extends java.rmi.Remote {
    int add(int a, int b) throws java.rmi.RemoteException;
}

// Remote Implementation
public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
    protected CalculatorImpl() throws java.rmi.RemoteException {
        super();
    }

    @Override
    public int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        try {
            System.setProperty("javax.net.ssl.keyStore", "server.keystore");
            System.setProperty("javax.net.ssl.keyStorePassword", "password");

            RMIServerSocketFactory sslSocketFactory = new RMIServerSocketFactory() {
                @Override
                public java.net.ServerSocket createServerSocket(int port) throws java.io.IOException {
                    return SSLServerSocketFactory.getDefault().createServerSocket(port);
                }
            };

            Calculator calculator = new CalculatorImpl();
            Registry registry = LocateRegistry.createRegistry(1099, null, sslSocketFactory);
            registry.rebind("CalculatorService", calculator);

            System.out.println("SSL RMI Server is running...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

৩. ক্লায়েন্ট কোড (SSL/TLS সক্রিয় করা)

import javax.net.ssl.SSLSocketFactory;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

// Client Code
public class CalculatorClient {
    public static void main(String[] args) {
        try {
            System.setProperty("javax.net.ssl.trustStore", "client.truststore");
            System.setProperty("javax.net.ssl.trustStorePassword", "password");

            Registry registry = LocateRegistry.getRegistry("localhost", 1099, SSLSocketFactory.getDefault());
            Calculator calculator = (Calculator) registry.lookup("CalculatorService");

            int result = calculator.add(5, 10);
            System.out.println("Result: " + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

৪. SSL/TLS Properties ব্যাখ্যা

Propertyভূমিকা
javax.net.ssl.keyStoreসার্ভারের কীস্টোর যেখানে সার্টিফিকেট এবং প্রাইভেট কী সংরক্ষিত।
javax.net.ssl.keyStorePasswordকীস্টোরের পাসওয়ার্ড।
javax.net.ssl.trustStoreক্লায়েন্টের ট্রাস্টস্টোর যেখানে সার্ভারের সার্টিফিকেট সংরক্ষিত।
javax.net.ssl.trustStorePasswordট্রাস্টস্টোরের পাসওয়ার্ড।

৫. রান করার ধাপসমূহ

  1. কীস্টোর এবং ট্রাস্টস্টোর তৈরি করুন: উপরের কমান্ড ব্যবহার করে।
  2. সার্ভার চালান:

    java -Djavax.net.ssl.keyStore=server.keystore -Djavax.net.ssl.keyStorePassword=password CalculatorImpl
    
  3. ক্লায়েন্ট চালান:

    java -Djavax.net.ssl.trustStore=client.truststore -Djavax.net.ssl.trustStorePassword=password CalculatorClient
    

SSL/TLS ব্যবহার করার সুবিধা

  1. ডেটা এনক্রিপশন: ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা এনক্রিপ্ট থাকে।
  2. নিরাপত্তা: ম্যান-ইন-দ্য-মিডল আক্রমণ প্রতিরোধ।
  3. সনাক্তকরণ: সার্ভারের পরিচয় নিশ্চিত করতে সার্টিফিকেট ব্যবহার।

SSL/TLS দিয়ে RMI Communication সেটআপ করা নিরাপত্তা বৃদ্ধি করে এবং ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোর নিরাপদ যোগাযোগ নিশ্চিত করে। সঠিক কীস্টোর এবং ট্রাস্টস্টোর ব্যবহারের মাধ্যমে সহজেই জাভা RMI সুরক্ষিত করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...