প্রক্সি সার্ভারগুলির মধ্যে HTTPS সংযোগ


104

প্রক্সি সার্ভারের মাধ্যমে কি এইচটিটিপিএস সংযোগ থাকা সম্ভব? যদি হ্যাঁ, তবে কোন ধরণের প্রক্সি সার্ভার এটির অনুমতি দেয়?

অ্যাপাচি এইচটিটিপি ক্লায়েন্ট 4 এর সাথে মোজা 5 প্রক্সি কীভাবে ব্যবহার করবেন তার নকল ?


আমি মনে করি এটি স্ট্যাকওভারফ্লো.com
উরি

হ্যাঁ, এটা সম্ভব। এখানে বাস্তব উদাহরণগুলি দেখুন stackoverflow.com/questions/56981993/…
রিক

উত্তর:


67

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

আপনি যদি প্রক্সিটি তথ্য পড়তে সক্ষম হন তবে আপনি নীচের পদ্ধতিটি গ্রহণ করতে পারেন:

  1. ক্লায়েন্ট এইচটিটিপিএস অধিবেশন শুরু করে
  2. প্রক্সি স্বচ্ছভাবে সংযোগটি বাধা দেয় এবং ক্লায়েন্টের দ্বারা নিঃশর্ত বিশ্বাসযোগ্য একটি শংসাপত্র কর্তৃপক্ষের দ্বারা স্বাক্ষরিত একটি অ্যাডহক উত্পাদিত (সম্ভবত দুর্বল) শংসাপত্র ফেরত দেয়।
  3. প্রক্সি লক্ষ্য করতে HTTPS সেশন শুরু করে
  4. প্রক্সি এসএসএল শংসাপত্রের অখণ্ডতা যাচাই করে; শংসাপত্রটি বৈধ না হলে ত্রুটি প্রদর্শন করে।
  5. প্রক্সি বিষয়বস্তু স্ট্রীম করে, এটা ডিক্রিপ্ট এবং এটি কে সঙ্গে পুনরায় এনক্রিপ্ট একটি
  6. ক্লায়েন্ট স্টাফ প্রদর্শন করে

একটি উদাহরণ স্কুইডের এসএসএল বাম্প । একইভাবে, বার্প এটির জন্য কনফিগার করা যায়। এটি মিশরীয় আইএসপি দ্বারা স্বল্প-সৌম্য প্রসঙ্গে ব্যবহৃত হয়েছে ।

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


13
এটি নীতিগতভাবে কাজ করতে পারে তবে এইচটিটিপিএস অনুরোধের জন্য ব্রাউজাররা এইচটিটিপি প্রক্সির সাথে কথা বলার উপায় নয়। এখানে এটি যেভাবে বর্ণিত হয়েছে তার থেকে বোঝা যায় যে প্রক্সি সার্ভারটি কার্যকরভাবে একজন ম্যান-ইন-দ্য-মিডল (যাতে সেই অনুযায়ী বিশ্বাস করতে হবে)।
ব্রুনো

5
স্কুইড এটি করে। একে এসএসএল বাম্প বলে
অ্যাডাম ম্যাকলার

4
ব্যবহারকারীর শেষ হওয়ার জন্য ডাব্লু / ও প্রচুর সতর্কতা কাজ করবে না। "ক্লায়েন্ট দ্বারা নিঃশর্ত বিশ্বস্ত" - এরকম কোনও জিনিস নেই। এমনকি শংসাপত্রটি নিখুঁত-এএএ +++ রয়েছে, এটি এখনও শেষ ডোমেন ব্যবহারকারীদের কাছে যা চেয়েছিল তার সাথে মেলে না এমন বিভিন্ন ডোমেন দেখায়, যা কোনও বুদ্ধিমান ব্রাউজার তৈরি করবে (যার অর্থ এখানে IE নয়) ঝাঁপিয়ে পড়ে চিৎকার করছে। অবশ্যই, এসএসএল চেকগুলি অক্ষম করার পরামিতিগুলির সাথে উইজেট ব্যবহার করা সম্ভব তবে অনুমান কী? মূল সুরক্ষা চেক অক্ষম হওয়ার পরে এই সংযোগটিকে আর "এসএসএল" নামকরণ করা যাবে না।
ভ্যান জোন

4
@ ভ্যান জোন Unconditionally trustedএকটি সিএ সার্ট বোঝায়। সিএ সার্টে ডোমেন নেই। আমি দুটি উদাহরণ সহ উত্তরটি সংশোধন করেছি যেখানে এটি ব্যবহারকারীর কোনও সতর্কতা ছাড়াই বাস্তবে কাজ করে / করে।
ফিহাগ

6
আমার উত্তর আপনি "বোগাস সিএ" বলছেন তার উপর নির্ভর করে। সিএ সার্টিফিকেট হয় নিঃশর্তভাবে বিশ্বস্ত, হয় ব্যবহারকারী (বা তার কম্পিউটারে সফ্টওয়্যার, উদাহরণস্বরূপ এন্টারপ্রাইজ কনফিগারেশন বা ম্যালওয়্যার জন্য) এটা যে পথ কনফিগার, অথবা কারণ সিএ CA গুলির এক থেকে প্রাপ্ত হয়েছিল প্রধান ব্রাউজার, এর দ্বারা বিশ্বস্ত মত এমসিএস ক্ষেত্রে। প্রক্সিটি প্রতিটি ডোমেনের জন্য ক্লায়েন্টের অনুরোধের জন্য একটি নতুন বৈধ শংসাপত্র তৈরি করে, সুতরাং উত্তরের শেষে উল্লিখিত অ্যান্টি-এমআইটিএম সুবিধা ছাড়া ক্লায়েন্টটি খেয়াল করবে না notice
ফিহাগ

24

সংক্ষিপ্ত উত্তরটি হল: এটি সম্ভব এবং একটি বিশেষ এইচটিটিপি প্রক্সি বা একটি এসওকেএসএস প্রক্সি দিয়ে করা যেতে পারে।

প্রথম এবং সর্বাগ্রে, এইচটিটিপিএস এসএসএল / টিএলএস ব্যবহার করে যা ডিজাইন অনুসারে একটি নিরাপত্তাহীন যোগাযোগের উপরে সুরক্ষিত যোগাযোগের চ্যানেল স্থাপন করে শেষ থেকে শেষ পর্যন্ত সুরক্ষা নিশ্চিত করে। যদি এইচটিটিপি প্রক্সিটি বিষয়বস্তুগুলি দেখতে সক্ষম হয় তবে এটি একটি মাঝারি মধ্যবর্তী শ্রুতিমধুর এবং এটি এসএসএল / টিএলএসের লক্ষ্যকে পরাস্ত করে। সুতরাং আমরা যদি একটি সরল এইচটিটিপি প্রক্সির মাধ্যমে প্রক্সি করতে চাই তবে অবশ্যই কিছু কৌশল অবতীর্ণ হবে।

কৌশলটি হ'ল, আমরা একটি এইচটিটিপি প্রক্সিকে একটি বিশেষ কমান্ডযুক্ত টিসিপি প্রক্সিতে পরিণত করি CONNECT। সমস্ত এইচটিটিপি প্রক্সি এই বৈশিষ্ট্যটিকে সমর্থন করে না তবে এখন অনেকেই তা করে। টিসিপি প্রক্সিটি এইচটিটিপি বিষয়বস্তু পরিষ্কার পাঠ্যে স্থানান্তরিত করতে দেখতে পাচ্ছে না, তবে এটি প্যাকেটগুলি সামনে এবং পিছনে পাঠানোর ক্ষমতাকে প্রভাবিত করে না। এইভাবে, ক্লায়েন্ট এবং সার্ভার প্রক্সি সাহায্যে একে অপরের সাথে যোগাযোগ করতে পারে। এটি এইচটিটিপিএস ডেটা প্রক্সাইয়ের নিরাপদ উপায়।

এটি করার একটি অনিরাপদ উপায়ও রয়েছে, যার মধ্যে এইচটিটিপি প্রক্সিটি মাঝখানে হয়ে যায়। এটি ক্লায়েন্ট-সূচিত সংযোগটি গ্রহণ করে এবং তারপরে প্রকৃত সার্ভারের সাথে অন্য একটি সংযোগ শুরু করে। একটি কার্যকরভাবে এসএসএল / টিএলএসে ক্লায়েন্টকে অবহিত করা হবে যে প্রক্সিটি প্রকৃত সার্ভার নয়। সুতরাং ক্লায়েন্টকে জিনিসগুলি কাজ করার জন্য সতর্কতা উপেক্ষা করে প্রক্সিটিতে বিশ্বাস করতে হবে। এর পরে, প্রক্সিটি কেবল একটি সংযোগ থেকে ডেটা ডিক্রিপ্ট করে, পুনরায় এনক্রিপ্ট করে এবং অন্যটিতে ফিড করে।

অবশেষে, আমরা অবশ্যই একটি সোস প্রক্সির মাধ্যমে প্রক্সি HTTPS করতে পারি , কারণ SOCKS প্রক্সিটি নিম্ন স্তরে কাজ করে। আপনি SOCKS প্রক্সিটিকে TCP এবং UDP উভয় প্রক্সি হিসাবে ভাবতে পারেন।


সংযোগ ব্যবহারের কারণে স্ট্যাকওভারফ্লো . com/a/3118759/632951 তে উল্লিখিত সুরক্ষা সতর্কতাগুলির কারণ হতে পারে ?
পেসারিয়ার

@ পেসারিয়র আমি এটি মনে করি না। সংযোগ মোডে প্রক্সিটি পরিবহন স্তরে কাজ করে।
সাইকেল

সুতরাং, সংযোগ পদ্ধতি দ্বারা, ক্লায়েন্টের কোনও https ডেটা মধ্যস্থ প্রক্সিটির অ্যাপ্লিকেশন স্তরে পাস করা হয় না ? এবং কেবলমাত্র প্রক্সি টিসিপি স্তরে মূল্যায়ন করে সরাসরি রিমোট সার্ভারে রিলে করা হয়েছে ?
zzinny

15

আমি যতদূর মনে করতে পারি, আপনাকে প্রক্সিটিতে একটি HTTP সংযোগ কোয়েরি ব্যবহার করতে হবে। এটি অনুরোধ সংযোগটি একটি স্বচ্ছ টিসিপি / আইপি টানলে রূপান্তর করবে।

সুতরাং আপনি যে প্রক্সি সার্ভারটি ব্যবহার করেন এটি এই প্রোটোকলটিকে সমর্থন করে কিনা তা আপনার জানতে হবে।


4
প্রকৃতপক্ষে, ক্লায়েন্টরা HTTP প্রক্সি সার্ভারের মাধ্যমে https: // ইউআরআই ব্যবহার করতে সংযোগ ক্রিয়া ব্যবহার করে। এই ক্ষেত্রে, সংযোগটি প্রক্সিটির মাধ্যমে সুড়ঙ্গ করা হয়েছে, তাই শংসাপত্র যাচাই যথারীতি সম্পন্ন হয়, যেন ক্লায়েন্টটি শেষ সার্ভারের সাথে সরাসরি কথা বলছিল।
ব্রুনো

4
@ চিবার্ড, তবে প্রক্সিগুলি কি সাধারণত HTTP সংযোগ সমর্থন করে?
পেসারিয়ার

9

যদি এটি এখনও আগ্রহের বিষয় না থাকে তবে এখানে একটি অনুরূপ প্রশ্নের উত্তর দেওয়া হয়েছে: এইচটিটিপি প্রক্সিকে ট্যুইস্টডে এইচটিটিপিএস প্রক্সি রূপান্তর করুন

প্রশ্নের দ্বিতীয় অংশের উত্তর দিতে:

যদি হ্যাঁ, তবে কোন ধরণের প্রক্সি সার্ভার এটির অনুমতি দেয়?

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


5

এখানে আমার সম্পূর্ণ জাভা কোড যা এসওটিপি এবং এইচটিটিপিএস উভয় অনুরোধকে এসওকেএসএস প্রক্সি ব্যবহার করে সমর্থন করে।

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

import org.apache.http.HttpHost;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.protocol.HttpContext;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;

import javax.net.ssl.SSLContext;

/**
 * How to send a HTTP or HTTPS request via SOCKS proxy.
 */
public class ClientExecuteSOCKS {

    public static void main(String[] args) throws Exception {
        Registry<ConnectionSocketFactory> reg = RegistryBuilder.<ConnectionSocketFactory>create()
            .register("http", new MyHTTPConnectionSocketFactory())
            .register("https", new MyHTTPSConnectionSocketFactory(SSLContexts.createSystemDefault
                ()))
            .build();
        PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(reg);
        try (CloseableHttpClient httpclient = HttpClients.custom()
            .setConnectionManager(cm)
            .build()) {
            InetSocketAddress socksaddr = new InetSocketAddress("mysockshost", 1234);
            HttpClientContext context = HttpClientContext.create();
            context.setAttribute("socks.address", socksaddr);

            HttpHost target = new HttpHost("www.example.com/", 80, "http");
            HttpGet request = new HttpGet("/");

            System.out.println("Executing request " + request + " to " + target + " via SOCKS " +
                "proxy " + socksaddr);
            try (CloseableHttpResponse response = httpclient.execute(target, request, context)) {
                System.out.println("----------------------------------------");
                System.out.println(response.getStatusLine());
                System.out.println(EntityUtils.toString(response.getEntity(), StandardCharsets
                    .UTF_8));
            }
        }
    }

    static class MyHTTPConnectionSocketFactory extends PlainConnectionSocketFactory {
        @Override
        public Socket createSocket(final HttpContext context) throws IOException {
            InetSocketAddress socksaddr = (InetSocketAddress) context.getAttribute("socks.address");
            Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
            return new Socket(proxy);
        }
    }

    static class MyHTTPSConnectionSocketFactory extends SSLConnectionSocketFactory {
        public MyHTTPSConnectionSocketFactory(final SSLContext sslContext) {
            super(sslContext);
        }

        @Override
        public Socket createSocket(final HttpContext context) throws IOException {
            InetSocketAddress socksaddr = (InetSocketAddress) context.getAttribute("socks.address");
            Proxy proxy = new Proxy(Proxy.Type.SOCKS, socksaddr);
            return new Socket(proxy);
        }
    }
}

3

আপনি গতিশীল এসএসএল প্রজন্মের সাথে ম্যান-ইন-মধ্য-কৌশলগুলি ব্যবহার করে এটি অর্জন করতে পারেন। মিটমপ্রক্সিতে একবার দেখুন - এটি পাইথন ভিত্তিক, এসএসএল-সক্ষম এমআইটিএম প্রক্সি।


3

এসএসএইচ (লিনাক্স সংস্করণ) এর মাধ্যমে HTTPS টানেলিং:

1) turn off using 443 on localhost
2) start tunneling as root: ssh -N login@proxy_server -L 443:target_ip:443
3) adding 127.0.0.1 target_domain.com to /etc/hosts

লোকালহোস্টে আপনি যা কিছু করেন। তারপরে:

target_domain.com is accessible from localhost browser.

1

আমি চেষ্টা করেছিলাম

  • টানেলিং শুরু: ssh -N -D 12345 login@proxy_server
  • ফায়ারফক্স সেটিংসে প্রক্সি সেট করা হচ্ছে localhost:12345
    • এবং "সমস্ত প্রোটোকলের জন্য এই প্রক্সিটি ব্যবহার করুন" টিক্স করা হচ্ছে

তবে আমি যখনই কোনও https ওয়েবসাইটের সাথে সংযোগ করার চেষ্টা করেছি তখন এর ফলে "অনিরাপদ সংযোগ" ত্রুটি হয়েছিল।

সমাধান ছিল

  • "সমস্ত প্রোটোকলের জন্য এই প্রক্সিটি ব্যবহার করুন" "আনটিক করুন"
  • "লোকালহোস্ট: 12345" প্রক্সিটি কেবলমাত্র SOCKS প্রক্সি হিসাবে সেট করুন
  • এবং এইচটিটিপি প্রক্সি, এসএসএল প্রক্সি, এফটিপি প্রক্সি খালি ছেড়ে দিন

ডিজিটাল সাগর ডকুমেন্টেশন থেকে রেফারেন্স

কোনও সক্স টানেল ব্যবহার করে কোনও ভিপিএন ছাড়াই কীভাবে নিরাপদভাবে ওয়েব ট্র্যাফিক রুট করা যায়


1

আমি মনে করি না "প্রক্সি সার্ভারের সাথে এইচটিটিপিএস সংযোগ রয়েছে" এর অর্থ ম্যান-ইন-দ্য মিডল অ্যাটাক প্রকার প্রক্সি সার্ভার। আমি মনে করি এটি জিজ্ঞাসা করছে যে কেউ টিএলএসের মাধ্যমে কোনও HTTP প্রক্সি সার্ভারের সাথে সংযোগ করতে পারে কিনা। এবং উত্তরটি হচ্ছে হ্যা।


প্রক্সি সার্ভারের মাধ্যমে কি এইচটিটিপিএস সংযোগ থাকা সম্ভব?

হ্যাঁ, আমার প্রশ্ন এবং উত্তর এখানে দেখুন। HTTP গুলি প্রক্সি সার্ভারটি কেবল সুইচওমেগায় কাজ করে

যদি হ্যাঁ, তবে কোন ধরণের প্রক্সি সার্ভার এটির অনুমতি দেয়?

প্রক্সি সার্ভারের ধরণের সাধারণ ওয়েবসাইটগুলি কীভাবে এসএসএল শংসাপত্রগুলি মোতায়েন করে। তবে pacব্রাউজারের এসএসএলের মাধ্যমে প্রক্সি সংযোগটি কনফিগার করতে আপনার একটি ফাইল দরকার need

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